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

• Last Updated : 14 Aug, 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.

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 experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

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:

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`

## Javascript

 ``
Output:
`4 0 4 0 4`

Time Complexity: O(N)
Auxilary Space: O(K)

My Personal Notes arrow_drop_up