Encuentre todos los pares posibles con valores Bitwise OR y Bitwise XOR dados

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 = 7

Entrada: 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>
Producción: 

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *