Cree una array tal que XOR de subarreglos de longitud K sea X

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

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

Deja una respuesta

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