Dados dos enteros positivos A y B que representan Bitwise XOR y Bitwise OR de dos enteros positivos, la tarea es encontrar todos los pares posibles (x, y) tales que x ^ y sea igual a A y x | y es igual a B.
Ejemplos:
Entrada: A = 5, B = 7
Salida:
2 7
3 6
6 3
7 2
Explicación:
7( XOR )2 = 5 y 7( OR )2 = 7
3( XOR )6 = 5 y 3( OR )6 = 7Entrada: A = 8, B = 10
Salida:
2 10
10 2
Enfoque ingenuo: el enfoque más simple para resolver el problema es generar todos los pares posibles y, para cada par, verificar si su Bitwise XOR y Bitwise OR son iguales a A y B respectivamente.
Complejidad de Tiempo: O(B 2 )
Espacio Auxiliar: O(1)
Enfoque eficiente: la idea es atravesar todos los valores posibles de x y usar la propiedad de XOR de que si x ^ y = A , entonces x ^ A = y para encontrar todos los valores posibles de y . Siga los pasos a continuación para resolver el problema:
- Itere de 1 a B usando una variable, digamos i , y realice las siguientes operaciones:
- Inicialice una variable y como i ^ A .
- Comprueba si el valor de y es mayor que 0 y (i | y) es igual a B o no.
- Si se encuentra que es cierto, imprima los valores de i e y .
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ code for the above approach #include <bits/stdc++.h> using namespace std; // Function to find pairs with // XOR equal to A and OR equal to B void findPairs(int A, int B) { // Iterate from 1 to B for (int i = 1; i <= B; i++) { int y = A ^ i; // Check if (i OR y) is B if (y > 0 and (i | y) == B) { cout << i << " " << y << endl; } } } // Driver Code int main() { int A = 8, B = 10; findPairs(A, B); return 0; }
Java
// Java code for the above approach import java.util.*; class GFG{ // Function to find pairs with // XOR equal to A and OR equal to B static void findPairs(int A, int B) { // Iterate from 1 to B for(int i = 1; i <= B; i++) { int y = A ^ i; // Check if (i OR y) is B if (y > 0 && (i | y) == B) { System.out.println(i + " " + y); } } } // Driver Code public static void main(String[] args) { int A = 8, B = 10; findPairs(A, B); } } // This code is contributed by Hritik
Python3
# Python3 code for the above approach # Function to find pairs with # XOR equal to A and OR equal to B def findPairs(A, B): # Iterate from 1 to B for i in range(1, B + 1): y = A ^ i # Check if (i OR y) is B if (y > 0 and (i | y) == B): print(i, " ", y) # Driver Code A = 8 B = 10 findPairs(A, B) # This code is contributed by amreshkumar3
C#
// C# code for the above approach using System; class GFG { // Function to find pairs with // XOR equal to A and OR equal to B static void findPairs(int A, int B) { // Iterate from 1 to B for(int i = 1; i <= B; i++) { int y = A ^ i; // Check if (i OR y) is B if (y > 0 && (i | y) == B) { Console.WriteLine(i + " " + y); } } } // Driver code static void Main () { int A = 8, B = 10; findPairs(A, B); } } // This code is contributed by suresh07.
Javascript
<script> // JavaScript code for the above approach // Function to find pairs with // XOR equal to A and OR equal to B function findPairs(A, B) { // Iterate from 1 to B for (let i = 1; i <= B; i++) { let y = A ^ i; // Check if (i OR y) is B if (y > 0 && (i | y) == B) { document.write(i + " " + y + "<br>"); } } } // Driver Code let A = 8, B = 10; findPairs(A, B); // This code is contributed by gfgking </script>
2 10 10 2
Complejidad temporal: O(B)
Espacio auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por zack_aayush y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA