이 문제에서는 n개의 요소 배열이 제공됩니다. 우리의 임무는 A의 모든 요소와 자기 자신의 쌍의 합인 크기 n*n의 시퀀스를 생성하는 것입니다. 그리고 형성된 이 합계 배열의 xor 요소를 인쇄합니다.
문제를 이해하기 위해 예를 들어 보겠습니다.
입력 - A (1, 4, 5)
출력 - 0
설명 -
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.
이 문제를 해결하려면 Xor의 몇 가지 속성을 알아야 합니다. 숫자가 같은 숫자의 첫 번째 XOR은 0입니다. 이제 새로 형성된 배열에는 동일한 요소를 취하는 여러 요소가 있습니다. 요소 a[i]+a[j] 그리고 a[j]+a[i]는 동일하므로 xor가 0이 됩니다. 따라서 2a[i] 요소만 남게 되므로 모든 a[i] 요소의 xor를 가져와 다음과 같이 곱합니다. 둘. 이것이 우리의 최종 답변이 될 것입니다.
예시
알고리즘 구현을 보여주는 프로그램
#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; }
출력
The xor of the sum pair of elements of the array is 2