Number whose XOR sum with given array is a given number k

Last Updated : 10 Nov, 2022

Given an array of N numbers and a number K. The task is to insert a number in the given array such that the bitwise XOR of all the elements in the new array equals the given input K.

Examples:

Input: a = {1, 2, 3, 4, 5}, k = 10
Output: 11
Explanation: 1 ^ 2 ^ 3 ^ 4 ^ 5 ^ 11 = 10

Input: A[] = { 12, 23, 34, 56, 78 }, k = 6
Output: 73

Approach:

The basic idea is to use the simple XOR property, i.e. if X ^ Y = Z then X ^ Z = Y. Let’s suppose the number to be inserted in array be X such that (A[0] ^ A[1] ^ … ^ A[n – 1]) ^ X = k. Thus, to find X we can use the relation (A[0] ^ A[1] ^ … ^ A[n – 1]) ^ k = X.

Below is the implementation of above approach.

C++

 `// CPP Program to find the number` `// whose XOR sum with given array is` `// equal to a given number k` `#include ` `using` `namespace` `std;`   `// This function returns the number to` `// be inserted in the given array` `int` `findEletobeInserted(``int` `A[], ``int` `n, ``int` `k)` `{` `    ``// initialise the answer with k` `    ``int` `ans = k;` `    ``for` `(``int` `i = 0; i < n; i++)` `        ``ans ^= A[i]; ``// XOR of all elements in the array` `    ``return` `ans;` `}`   `// Driver Code to test above function` `int` `main()` `{` `    ``int` `A[] = { 1, 2, 3, 4, 5 };` `    ``int` `n = ``sizeof``(A) / ``sizeof``(A[0]);` `    ``int` `k = 10;`   `    ``cout << findEletobeInserted(A, n, k) ` `         ``<< ``" has to be inserted"` `         ``" in the given array to make xor sum of "` `         ``<< k << endl;`   `    ``return` `0;` `}`

Java

 `// Java Program to find the number` `// whose XOR sum with given array is` `// equal to a given number k` `import` `java.io.*;`   `class` `GFG {`   `    ``// This function returns the number to` `    ``// be inserted in the given array` `    ``static` `int` `findEletobeInserted(``int` `A[], ` `                              ``int` `n, ``int` `k)` `    ``{` `        `  `        ``// initialise the answer with k` `        ``int` `ans = k;` `        ``for` `(``int` `i = ``0``; i < n; i++)` `        `  `            ``// XOR of all elements in ` `            ``// the array` `            ``ans ^= A[i]; ` `        ``return` `ans;` `    ``}` `    `  `    ``// Driver Code to test above function` `    ``public` `static` `void` `main (String[] args)` `    ``{` `        ``int` `A[] = { ``1``, ``2``, ``3``, ``4``, ``5` `};` `        ``int` `n =A.length;` `        ``int` `k = ``10``;` `    `  `        ``System.out.println(` `             ``findEletobeInserted(A, n, k) ` `              ``+ ``" has to be inserted in "` `              ``+ ``"the given array to make"` `                   ``+ ``" xor sum of "` `+ k);` `    ``}` `}`   `// This code is contributed by anuj_67.`

Python3

 `# Python 3 Program to find the number` `# whose XOR sum with given array is` `# equal to a given number k`   `# This function returns the number to` `# be inserted in the given array` `def` `findEletobeInserted(A, n, k):` `    `  `    ``# initialise the answer with k` `    ``ans ``=` `k` `    ``for` `i ``in` `range``(n):` `        ``ans ^``=` `A[i] ``# XOR of all elements ` `                    ``# in the array` `    ``return` `ans`   `# Driver Code` `if` `__name__ ``=``=` `'__main__'``:` `    ``A ``=` `[``1``, ``2``, ``3``, ``4``, ``5``]` `    ``n ``=` `len``(A)` `    ``k ``=` `10` `    `  `    ``print``(findEletobeInserted(A, n, k), ` `          ``"has to be inserted in the given"``,` `          ``"array to make xor sum of"``, k)`   `# This code is contributed by` `# Surendra_Gangwar`

C#

 `// C# Program to find the number` `// whose XOR sum with given array is` `// equal to a given number k` `using` `System ;`   `class` `GFG {`   `    ``// This function returns the number to` `    ``// be inserted in the given array` `    ``static` `int` `findEletobeInserted(``int` `[]A, ` `                            ``int` `n, ``int` `k)` `    ``{` `        `  `        ``// initialise the answer with k` `        ``int` `ans = k;` `        ``for` `(``int` `i = 0; i < n; i++)` `        `  `            ``// XOR of all elements in ` `            ``// the array` `            ``ans ^= A[i]; ` `        ``return` `ans;` `    ``}` `    `  `    ``// Driver Code to test above function` `    ``public` `static` `void` `Main ()` `    ``{` `        ``int` `[]A = { 1, 2, 3, 4, 5 };` `        ``int` `n =A.Length;` `        ``int` `k = 10;` `    `  `        ``Console.WriteLine(` `            ``findEletobeInserted(A, n, k) ` `            ``+ ``" has to be inserted in "` `            ``+ ``"the given array to make"` `                ``+ ``" xor sum of "` `+ k);` `    ``}` `}`   `// This code is contributed by anuj_67.`

PHP

 ``

Javascript

 ``

Output

`11 has to be inserted in the given array to make xor sum of 10`

Time Complexity: O(n)
Auxiliary Space: O(1)

Previous
Next