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

XOR của Tổng của mọi cặp có thể có của một mảng trong C ++


Trong bài toán này, chúng ta được đưa ra một mảng gồm n phần tử. Nhiệm vụ của chúng ta là tạo ra một dãy có kích thước n * n có các phần tử là tổng của một cặp tất cả các phần tử của A với chính nó. Và in các phần tử xor của mảng tổng này được tạo thành.

Hãy lấy một ví dụ để hiểu vấn đề,

Đầu vào - A (1, 4, 5)

Đầu ra - 0

Giải thích -

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.

Để giải quyết vấn đề này, chúng ta cần biết một số thuộc tính của Xor. XOR đầu tiên của một số có cùng số là 0. Bây giờ, trong mảng mới tạo, có nhiều phần tử lấy giống nhau, các phần tử a [i] + a [j] và a [j] + a [i] giống nhau nên x của chúng sẽ bằng 0. Vì vậy, chúng ta chỉ còn lại 2a [i] phần tử, vì vậy chúng ta sẽ lấy xor của tất cả một phần tử [i] và nhân nó với hai. Đây sẽ là câu trả lời cuối cùng của chúng tôi.

Ví dụ

Chương trình hiển thị việc triển khai thuật toán của chúng tôi

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

Đầu ra

The xor of the sum pair of elements of the array is 2