Cho mảng n phần tử nhưng chỉ biết XOR của hai phần tử liên tiếp và phần tử đầu tiên. Mảng gốc a,b,c,d,e,f → mảng cho a^b, b^c, c^d, d^e, e^f.
Vì biết phần tử đầu a, ta tìm b = a ^ arr[0], c = b ^ arr[1], ...
Ví dụ mã nguồn
#include <iostream>
using namespace std;
void findActualElements(int a, int arr[], int n) {
int actual[n + 1];
actual[0] = a;
for (int i = 0; i < n; i++) {
actual[i + 1] = arr[i] ^ actual[i];
}
for (int i = 0; i < n + 1; i++)
cout << actual[i] << " ";
}
int main() {
int arr[] = {12, 5, 26, 7};
int n = sizeof(arr) / sizeof(arr[0]);
int a = 6;
findActualElements(a, arr, n);
}
Kết quả đầu ra
6 10 15 21 18