Dado un número entero N que denota el tamaño de una array y dos arrays que contienen Bitwise AND y Bitwise OR de elementos adyacentes de la array y el primer elemento de la array X , la tarea es construir la array original.
Ejemplos:
Entrada: N = 2, X(Primer elemento) = 2
Bitwise OR = {3}, Bitwise AND = {2}
Salida: {2, 3}Entrada: N = 3, X(Primer elemento) = 3
Bitwise OR = {4, 3}, Bitwise AND = {3, 4}
Salida: {3, 4, 3}
Enfoque : para resolver el problema, siga la siguiente idea:
El problema se puede resolver usando esta relación matemática -> A|B = A + B – A&B
Siga los pasos dados para resolver el problema:
- Iterar de i = 1 a N-1 para calcular los elementos restantes de la array.
- Utilice la fórmula indicada anteriormente para generar valores de array
- Luego imprime todos los elementos
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 which will calculate the array elements vector<int> solve(int N, int X, int OR[], int AND[]) { vector<int> a(N); a[0] = X; // Loop to calculate the array elements for (int i = 1; i < N; i++) { a[i] = OR[i - 1] + AND[i - 1] - a[i - 1]; } // Return the original array return a; } // Driver code int main() { int N = 2, X = 2; int OR[] = { 3 }; int AND[] = { 2 }; // Function call vector<int> ans = solve(N, X, OR, AND); for (int i : ans) cout << i << " "; return 0; }
Java
// Java code for the above approach import java.io.*; class GFG { // Function which will calculate the array elements static int[] solve(int N, int X, int[] OR, int[] AND) { int[] a = new int[N]; a[0] = X; // Loop to calculate the array elements for (int i = 1; i < N; i++) { a[i] = OR[i - 1] + AND[i - 1] - a[i - 1]; } // return the original array return a; } public static void main(String[] args) { int N = 2, X = 2; int[] OR = { 3 }; int[] AND = { 2 }; // Function call int[] ans = solve(N, X, OR, AND); for (int i = 0; i < ans.length; i++) { System.out.print(ans[i] + " "); } } } // This code is contributed by lokesh (lokeshmvs21).
Javascript
<script> // JavaScript code for the above approach // Function which will calculate the array elements const solve = (N, X, OR, AND) => { let a = new Array(N).fill(0); a[0] = X; // Loop to calculate the array elements for (let i = 1; i < N; i++) { a[i] = OR[i - 1] + AND[i - 1] - a[i - 1]; } // Return the original array return a; } // Driver code let N = 2, X = 2; let OR = [3]; let AND = [2]; // Function call let ans = solve(N, X, OR, AND); for (let i in ans) document.write(`${ans[i]} `); // This code is contributed by rakeshsahni </script>
2 3
Complejidad temporal: O(N)
Espacio auxiliar: O(N)
Publicación traducida automáticamente
Artículo escrito por shivamaggarwal5570 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA