根据C ++中相同索引处的元素以外的所有数组元素的XOR构造一个数组

假设我们有一个包含n个正元素的数组A []。我们必须创建另一个数组B,使得B [i]是A []除A [i]之外的所有元素的XOR。因此,如果A = [2,1,5,9],那么B = [13,14,10,6]

为了解决这个问题,首先我们必须找到A的所有元素的XOR,并将其存储到变量x中,然后对于A [i]的每个元素,找到B [i] = x XOR A [i]

示例

#include <iostream>
using namespace std;
void findXOR(int A[], int n) {
   int x = 0;
   for (int i = 0; i < n; i++)
   x ^= A[i];
   for (int i = 0; i < n; i++)
   A[i] = x ^ A[i];
}
int main() {
   int A[] = {2, 1, 5, 9};
   int n = sizeof(A) / sizeof(A[0]);
   cout << "Actual elements: ";
   for (int i = 0; i < n; i++)
   cout << A[i] << " ";
   cout << endl;
   cout << "After XOR elements: ";
   findXOR(A, n);
   for (int i = 0; i < n; i++)
   cout << A[i] << " ";
}

输出结果

Actual elements: 2 1 5 9
After XOR elements: 13 14 10 6