Bitwise XOR de todos los pares no ordenados de una array dada

Dada una array arr[] de tamaño N , la tarea es encontrar el XOR bit a bit de todos los posibles pares desordenados de la array dada. 

Ejemplos:

Entrada : arr[] = {1, 5, 3, 7}
Salida: 0
Explicación:
Todos los pares desordenados posibles son (1, 5), (1, 3), (1, 7), (5, 3), ( 5, 7), (3, 7)
Bitwise XOR de todos los pares posibles son = 1 ^ 5 ^ 1 ^3 ^ 1 ^ 7 ^ 5 ^ 3 ^ 5^ 7 ^ 3 ^ 7 = 0
Por lo tanto, la salida requerida es 0 .

Entrada: arr[] = {1, 2, 3, 4}
Salida: 4

 

Enfoque ingenuo: la idea es atravesar la array y generar todos los pares posibles de la array dada . Finalmente, imprima el Bitwise XOR de cada elemento presente en estos pares de la array dada. Siga los pasos a continuación para resolver el problema:

  • Inicialice una variable, digamos totalXOR , para almacenar Bitwise XOR de cada elemento de estos pares.
  • Recorre la array dada y genera todos los pares posibles (arr[i], arr[j]) a partir de la array dada.
  • Para cada par (arr[i], arr[j]) , actualice el valor de totalXOR = (totalXOR ^ arr[i] ^ arr[j]) .
  • Finalmente, imprima el valor de totalXOR .

A continuación se muestra la implementación del enfoque anterior:

C++

// C++ program to implement
// the above approach
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to get bitwise XOR
// of all possible pairs of
// the given array
int TotalXorPair(int arr[], int N)
{
    // Stores bitwise XOR
    // of all possible pairs
    int totalXOR = 0;
 
    // Generate all possible pairs
    // and calculate bitwise XOR
    // of all possible pairs
    for (int i = 0; i < N; i++) {
        for (int j = i + 1; j < N;
             j++) {
 
            // Calculate bitwise XOR
            // of each pair
            totalXOR ^= arr[i]
                        ^ arr[j];
        }
    }
    return totalXOR;
}
 
// Driver Code
int main()
{
    int arr[] = { 1, 2, 3, 4 };
    int N = sizeof(arr) / sizeof(arr[0]);
    cout << TotalXorPair(arr, N);
}

Java

// Java program to implement
// the above approach
class GFG{
   
// Function to get bitwise XOR
// of all possible pairs of
// the given array
public static int TotalXorPair(int arr[],
                               int N)
{
  // Stores bitwise XOR
  // of all possible pairs
  int totalXOR = 0;
 
  // Generate all possible pairs
  // and calculate bitwise XOR
  // of all possible pairs
  for (int i = 0; i < N; i++)
  {
    for (int j = i + 1; j < N; j++)
    {
      // Calculate bitwise XOR
      // of each pair
      totalXOR ^= arr[i] ^ arr[j];
    }
  }
   
  return totalXOR;
}
 
// Driver code   
public static void main(String[] args)
{
  int arr[] = {1, 2, 3, 4};
  int N = arr.length;
  System.out.print(TotalXorPair(arr, N));
}
}
 
// This code is contributed by divyeshrabadiya07

Python3

# Python3 program to implement
# the above approach
 
# Function to get bitwise XOR
# of all possible pairs of
# the given array
def TotalXorPair(arr, N):
   
    # Stores bitwise XOR
    # of all possible pairs
    totalXOR = 0;
 
    # Generate all possible pairs
    # and calculate bitwise XOR
    # of all possible pairs
    for i in range(0, N):
        for j in range(i + 1, N):
           
            # Calculate bitwise XOR
            # of each pair
            totalXOR ^= arr[i] ^ arr[j];
 
    return totalXOR;
 
# Driver code
if __name__ == '__main__':
   
    arr = [1, 2, 3, 4];
    N = len(arr);
    print(TotalXorPair(arr, N));
 
# This code is contributed by shikhasingrajput

C#

// C# program to implement
// the above approach
using System;
 
class GFG{
   
// Function to get bitwise XOR
// of all possible pairs of
// the given array
public static int TotalXorPair(int []arr,
                               int N)
{
   
  // Stores bitwise XOR
  // of all possible pairs
  int totalXOR = 0;
 
  // Generate all possible pairs
  // and calculate bitwise XOR
  // of all possible pairs
  for(int i = 0; i < N; i++)
  {
    for(int j = i + 1; j < N; j++)
    {
       
      // Calculate bitwise XOR
      // of each pair
      totalXOR ^= arr[i] ^ arr[j];
    }
  }
  return totalXOR;
}
 
// Driver code   
public static void Main(String[] args)
{
  int []arr = {1, 2, 3, 4};
  int N = arr.Length;
   
  Console.Write(TotalXorPair(arr, N));
}
}
 
// This code is contributed by Princi Singh

Javascript

<script>
 
// Javascript program to implement
// the above approach
 
// Function to get bitwise XOR
// of all possible pairs of
// the given array
function TotalXorPair(arr, N)
{
     
    // Stores bitwise XOR
    // of all possible pairs
    let totalXOR = 0;
     
    // Generate all possible pairs
    // and calculate bitwise XOR
    // of all possible pairs
    for(let i = 0; i < N; i++)
    {
        for(let j = i + 1; j < N; j++)
        {
             
            // Calculate bitwise XOR
            // of each pair
            totalXOR ^= arr[i] ^ arr[j];
        }
    }
    return totalXOR;
}
  
// Driver Code
let arr = [ 1, 2, 3, 4 ];
let N = arr.length;
 
document.write(TotalXorPair(arr, N));
 
// This code is contributed by target_2
 
</script>
Producción

4

Complejidad de Tiempo: O(N 2 )
Espacio Auxiliar: O(1)

Enfoque eficiente: Para optimizar el enfoque anterior, siga las siguientes observaciones:

Propiedad de Bitwise XOR: 
a ^ a ^ a …….( Veces pares ) = 0 
a ^ a ^ a …….( Veces impares ) = a

Cada elemento de la array dada aparece exactamente (N – 1) veces en todos los pares posibles.
Por lo tanto, si N es par, entonces el XOR bit a bit de todos los pares posibles es igual al XOR bit a bit de todos los elementos de la array.
De lo contrario, el XOR bit a bit de todos los pares posibles es igual a 0.

Siga los pasos a continuación para resolver el problema:

  • Si N es impar, imprima 0 .
  • Si N es par, imprima el valor de XOR bit a bit de todos los elementos de la array dada.

A continuación se muestra la implementación del enfoque anterior.

C++

// C++ program to implement
// the above approach
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to get bitwise XOR
// of all possible pairs of
// the given array
int TotalXorPair(int arr[], int N)
{
    // Stores bitwise XOR
    // of all possible pairs
    int totalXOR = 0;
 
    // Check if N is odd
    if (N % 2 != 0) {
        return 0;
    }
 
    // If N is even then calculate
    // bitwise XOR of all elements
    // of the given array.
    for (int i = 0; i < N; i++) {
        totalXOR ^= arr[i];
    }
    return totalXOR;
}
 
// Driver Code
int main()
{
    int arr[] = { 1, 2, 3, 4 };
    int N = sizeof(arr) / sizeof(arr[0]);
    cout << TotalXorPair(arr, N);
}

Java

// Java program to implement
// the above approach
class GFG{
   
// Function to get bitwise XOR
// of all possible pairs of
// the given array
public static int TotalXorPair(int arr[],
                               int N)
{
  // Stores bitwise XOR
  // of all possible pairs
  int totalXOR = 0;
 
  // Check if N is odd
  if( N % 2 != 0 )
  {
    return 0;
  }
 
  // If N is even then calculate
  // bitwise XOR of all elements
  // of the array
  for(int i = 0; i < N; i++)
  {
    totalXOR ^= arr[i];
  }
 
  return totalXOR;
}
 
// Driver code   
public static void main(String[] args)
{
  int arr[] = {1, 2, 3, 4};
  int N = arr.length;
  System.out.print(TotalXorPair(arr, N));
}
}
 
// This code is contributed by math_lover

Python3

# Python3 program to implement
# the above approach
 
# Function to get bitwise XOR
# of all possible pairs of
# the given array
def TotalXorPair(arr, N):
 
    # Stores bitwise XOR
    # of all possible pairs
    totalXOR = 0
 
    # Check if N is odd
    if (N % 2 != 0):
        return 0
 
    # If N is even then calculate
    # bitwise XOR of all elements
    # of the given array.
    for i in range(N):
        totalXOR ^= arr[i]
 
    return totalXOR
 
# Driver code
if __name__ == '__main__':
 
    arr = [ 1, 2, 3, 4 ]
    N = len(arr)
     
    print(TotalXorPair(arr, N))
 
# This code is contributed by Shivam Singh

C#

// C# program to implement
// the above approach
using System;
 
class GFG{
   
// Function to get bitwise XOR
// of all possible pairs of
// the given array
static int TotalXorPair(int []arr,
                        int N)
{
     
    // Stores bitwise XOR
    // of all possible pairs
    int totalXOR = 0;
     
    // Check if N is odd
    if (N % 2 != 0)
    {
        return 0;
    }
     
    // If N is even then calculate
    // bitwise XOR of all elements
    // of the array
    for(int i = 0; i < N; i++)
    {
        totalXOR ^= arr[i];
    }
    return totalXOR;
}
 
// Driver code   
public static void Main(String[] args)
{
    int []arr = { 1, 2, 3, 4 };
    int N = arr.Length;
     
    Console.Write(TotalXorPair(arr, N));
}
}
 
// This code is contributed by doreamon_

Javascript

<script>
 
// Javascript program to implement
// the above approach
 
// Function to get bitwise XOR
// of all possible pairs of
// the given array
function TotalXorPair(arr, N)
{
    // Stores bitwise XOR
    // of all possible pairs
    let totalXOR = 0;
 
    // Check if N is odd
    if (N % 2 != 0) {
        return 0;
    }
 
    // If N is even then calculate
    // bitwise XOR of all elements
    // of the given array.
    for (let i = 0; i < N; i++) {
        totalXOR ^= arr[i];
    }
    return totalXOR;
}
 
// Driver Code
    let arr = [ 1, 2, 3, 4 ];
    let N = arr.length;
    document.write(TotalXorPair(arr, N));
 
</script>
Producción

4

Complejidad temporal: O(N)
Espacio auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por math_lover 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 *