给定一个由N个数字和一个数字K组成的数组。任务是在给定的数组中插入一个数字,以使新数组中所有元素的按位XOR等于给定的输入K。
例子:
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
方法:基本思想是使用简单的XOR属性,即,如果X ^ Y = Z,则X ^ Z =Y。假设要在数组中插入的数字为X,使得(A [0] ^ A [1] ^…^ A [n – 1])^ X = k。因此,要找到X,我们可以使用以下关系式(A [0] ^ A [1] ^ … ^ A [n – 1])^ k =X。
下面是上述方法的实现。
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
输出 :
11 has to be inserted in the given array to make xor sum of 10