# 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.

**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:

A[i] = X, when

i % K == 0

A[i] = 0, wheni % K != 0where 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 <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; ` `} ` |

*chevron_right*

*filter_none*

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

*chevron_right*

*filter_none*

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

*chevron_right*

*filter_none*

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

*chevron_right*

*filter_none*

**Output:**

4 0 4 0 4

**Time Complexity:*** O(N)*

Don’t stop now and take your learning to the next level. Learn all the important concepts of Data Structures and Algorithms with the help of the most trusted course: DSA Self Paced. Become industry ready at a student-friendly price.

## Recommended Posts:

- Count of possible subarrays and subsequences using given length of Array
- Generate a unique Array of length N with sum of all subarrays divisible by N
- Count of Subarrays in an array containing numbers from 1 to the length of subarray
- Maximum length L such that the sum of all subarrays of length L is less than K
- Maximum GCD of all subarrays of length at least 2
- Maximum sum of non-overlapping subarrays of length atmost K
- Make sum of all subarrays of length K equal by only inserting elements
- Count subarrays with non-zero sum in the given Array
- Product of all Subarrays of an Array | Set 2
- Product of all Subarrays of an Array
- Sum of Bitwise-OR of all subarrays of a given Array | Set 2
- Split array in three equal sum subarrays
- Split an array into two equal Sum subarrays
- Find an array of size N having exactly K subarrays with sum S
- Product of all non repeating Subarrays of an Array
- Differences between number of increasing subarrays and decreasing subarrays in k sized windows
- Maximum product of sum of two contiguous subarrays of an array
- Find if array can be divided into two subarrays of equal sum
- Sum of minimum element of all subarrays of a sorted array
- Count subarrays consisting of only 0's and only 1's in a binary array

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.