在这个问题中,我们得到了n个元素的数组。我们的任务是生成一个大小为n * n的序列,其元素是A与其自身的一对所有元素之和。并打印此求和数组形成的xor元素。
让我们举个例子来了解这个问题,
输入-A(1、4、5)
输出-0
说明-
B (1+1, 1+4, 1+5, 4+1, 4+4, 4+5, 5+1, 5+4, 5+5) B(2,5,6,5,8,9,6,9,10) Xor of all values = 2^5^6^5^8^9^6^9^10 = 0.
要解决此问题,我们需要了解Xor的一些属性。具有相同数字的数字的第一个XOR为0。现在,在新形成的数组中,有多个元素相同,元素a [i] + a [j]和a [j] + a [i]相同,因此它们的异或将为0。因此,我们只剩下2a [i]个元素,因此,我们将取所有a [i]元素的异或并将其乘以2。这将是我们的最终答案。
程序展示了我们算法的实现
#include <iostream>
using namespace std;
int findSumXor(int arr[], int n){
   int XOR = 0 ;
   for (int i = 0; i < n; i++) {
      XOR = XOR ^ arr[i];
   }
   return XOR * 2;
}
int main(){
   int arr[3] = { 2, 4, 7 };
   int n = sizeof(arr) / sizeof(arr[0]);
   cout<<"The xor of the sum pair of elements of the array is\t"<<findSumXor(arr, n);
   return 0;
}输出结果
The xor of the sum pair of elements of the array is 2