Skip to content
Related Articles

Related Articles

Create an array such that XOR of subarrays of length K is X
  • Last Updated : 30 Apr, 2021

Given three integers N, K and X, the task is to construct an array of length N, in which XOR of all elements of each contiguous sub-array of length K is X.
Examples: 
 

Input: N = 5, K = 1, X = 4 
Output: 4 4 4 4 4 
Explanation: 
Each subarray of length 1 has Xor value equal to 4.
Input: N = 5, K = 2, X = 4 
Output: 4 0 4 0 4 
Explanation: 
Each subarray of length 2 has Xor value equal to 4. 
 

 

Approach: 
To solve the problem mentioned above, we need to follow the steps given below:
 

  • Bitwise-XOR of any number, X with 0 is equal to the number itself. So, if we set the first element of the array A as X, and the next K – 1 elements as 0, then we will have the XOR of elements of first sub-array of length K, equal to X.
  • If we set A[K] as A[0], then we will have XOR(A[1], …, A[K]) = X. Similarly, if we set A[K + 1] as A[1], then we will have XOR(A[2], …, A[K+1]) = X
  • Continuing in this manner, we can observe that the general formula can be described as below:

Below is the implementation of the above approach:
 



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>
Output: 
4 0 4 0 4

 

Time Complexity: O(N)
 

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with industry experts, please refer Geeks Classes Live and Geeks Classes Live USA

 

My Personal Notes arrow_drop_up
Recommended Articles
Page :