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++ 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 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 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# 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 |
<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> |
4 0 4 0 4
Time Complexity: O(N)
Auxiliary Space: O(K)