Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm các phần tử của mảng bằng cách sử dụng XOR của các phần tử liên tiếp trong C ++

Hãy xem xét chúng ta phải tìm một danh sách gồm n phần tử. Nhưng chúng ta có giá trị XOR của hai phần tử liên tiếp của mảng thực tế. Ngoài ra, phần tử đầu tiên của thực tế cũng được đưa ra. Vì vậy, nếu các phần tử của mảng là a, b, c, d, e, f, thì mảng đã cho sẽ là a ^ b, b ^ c, c ^ d, d ^ e và e ^ f.

Vì số đầu tiên được đưa ra, có tên là a, có thể giúp chúng ta tìm tất cả các số. Nếu chúng ta muốn tìm phần tử thứ hai của mảng thực, thì chúng ta phải thực hiện b =a ^ arr [i], đối với phần tử thứ hai c =b ^ arr [1], v.v.

Ví dụ

#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);
}

Đầu ra

6 10 15 21 18