Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

XOR tổng mọi cặp phần tử trong mảng C++

Trong bài toán này, cho một mảng n phần tử. Nhiệm vụ là tạo dãy kích thước n*n chứa tổng của mọi cặp phần tử của mảng với chính nó, sau đó in XOR của các phần tử trong dãy tổng này.

Ví dụ:

Input – A = {1, 4, 5}

Output – 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 = 2^5^6^5^8^9^6^9^10 = 0

Quan sát: XOR của số với chính nó là 0. Trong mảng mới, a[i]+a[j] và a[j]+a[i] giống nhau nên XOR nhau ra 0. Chỉ còn lại 2*a[i]. Vậy XOR tất cả a[i] rồi nhân 2.

Ví dụ minh họa

#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 << "XOR tổng cặp phần tử của mảng: " << findSumXor(arr, n);
    return 0;
}

Kết quả

XOR tổng cặp phần tử của mảng: 2