Dados tres enteros N , K y X , la tarea es construir una array de longitud N , en la que XOR de todos los elementos de cada subarray contigua de longitud K es X .
Ejemplos:
Entrada: N = 5, K = 1, X = 4
Salida: 4 4 4 4 4
Explicación:
Cada subarreglo de longitud 1 tiene un valor Xor igual a 4.
Entrada: N = 5, K = 2, X = 4
Salida: 4 0 4 0 4
Explicación:
Cada subarreglo de longitud 2 tiene un valor Xor igual a 4.
Enfoque:
Para resolver el problema mencionado anteriormente, debemos seguir los pasos que se detallan a continuación:
- Bitwise-XOR de cualquier número, X con 0 es igual al número en sí. Entonces, si establecemos el primer elemento de la array A como X, y los siguientes K – 1 elementos como 0 , entonces tendremos el XOR de los elementos de la primera sub-array de longitud K, igual a X.
- Si establecemos A[K] como A[0] , entonces tendremos XOR(A[1], …, A[K]) = X. De manera similar, si establecemos A[K + 1] como A[1] , entonces tendremos XOR(A[2], …, A[K+1]) = X
- Continuando de esta manera, podemos observar que la fórmula general se puede describir de la siguiente manera:
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ implementation to Create an array // in which the XOR of all elements of // each contiguous sub-array of // length K is X #include <bits/stdc++.h> using namespace std; // Function to construct the array void constructArray(int N, int K, int X) { // Creating a vector of size K, // initialised with 0 vector<int> ans(K, 0); // Initialising the first element // with the given XOR ans[0] = X; for (int i = 0; i < N; ++i) { cout << ans[i % K] << " "; } cout << endl; } // Driver code int main() { int N = 5, K = 2, X = 4; constructArray(N, K, X); return 0; }
Java
// Java implementation to create an array // in which the XOR of all elements of // each contiguous sub-array of // length K is X class GFG{ // Function to construct the array public static void constructArray(int N, int K, int X) { // Creating an array of size K, // initialised with 0 int[] ans = new int[K]; // Initialising the first element // with the given XOR ans[0] = X; for(int i = 0; i < N; ++i) { System.out.print(ans[i % K] + " "); } } // Driver code public static void main(String[] args) { int N = 5, K = 2, X = 4; constructArray(N, K, X); } } // This code is contributed by divyeshrabadiya07
Python3
# Python3 implementation to create an array # in which the XOR of all elements of # each contiguous sub-array of # length K is X # Function to construct the array def constructArray(N, K, X): # Creating a list of size K, # initialised with 0 ans = [] for i in range(0, K): ans.append(0) # Initialising the first element # with the given XOR ans[0] = X for i in range(0, N): print(ans[i % K], end = " ") # Driver code N = 5 K = 2 X = 4 # Function call constructArray(N, K, X) # This code is contributed by ishayadav181
C#
// C# implementation to create an array // in which the XOR of all elements of // each contiguous sub-array of // length K is X using System; class GFG{ // Function to construct the array public static void constructArray(int N, int K, int X) { // Creating an array of size K, // initialised with 0 int[] ans = new int[K]; // Initialising the first element // with the given XOR ans[0] = X; for(int i = 0; i < N; ++i) { Console.Write(ans[i % K] + " "); } } // Driver code public static void Main(string[] args) { int N = 5, K = 2, X = 4; constructArray(N, K, X); } } // This code is contributed by rutvik_56
Javascript
<script> // Javascript implementation to Create an array // in which the XOR of all elements of // each contiguous sub-array of // length K is X // Function to construct the array function constructArray(N, K, X) { // Creating a vector of size K, // initialised with 0 let ans = new Array(K).fill(0); // Initialising the first element // with the given XOR ans[0] = X; for (let i = 0; i < N; ++i) { document.write(ans[i % K] + " "); } document.write("<br>"); } // Driver code let N = 5, K = 2, X = 4; constructArray(N, K, X); </script>
4 0 4 0 4
Complejidad temporal: O(N)
Espacio auxiliar: O(K)
Publicación traducida automáticamente
Artículo escrito por koulick_sadhu y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA