# Create an array such that XOR of subarrays of length K is X

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.

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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, then we will have XOR(A, …, A[K]) = X. Similarly, if we set A[K + 1] as A, then we will have XOR(A, …, A[K+1]) = X
• Continuing in this manner, we can observe that the general formula can be described as below:
• A[i] = X, when i % K == 0
A[i] = 0, when i % K != 0 where i is in the range [0,N – 1]

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 ` `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 = 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 = 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 `

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.

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.