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