n개의 요소로 구성된 배열이 있다고 가정합니다. 배열에서 XOR이 0이 되는 쌍의 수를 찾아야 합니다. XOR이 0이면 x =y인 쌍 (x, y)입니다. 이 문제를 해결하기 위해 배열을 정렬할 수 있습니다. 그런 다음 두 개의 연속 요소가 같으면 개수를 늘립니다. 모든 요소가 동일한 경우 마지막 개수는 계산되지 않을 수 있습니다. 이 경우 마지막 요소와 첫 번째 요소가 동일한지 확인하고 같으면 1씩 증가시킵니다.
예시
#include<iostream> #include<algorithm> using namespace std; int countPairs(int arr[], int n) { int count = 0; sort(arr, arr+n); for(int i = 0; i<n - 1; i++){ if(arr[i] == arr[i+1]){ count++; } } if(arr[0] == arr[n-1]) count++; return count; } int main() { int arr[] = {1, 2, 1, 2, 4}; int n = sizeof(arr)/sizeof(arr[0]); cout << "Number of pairs: " << countPairs(arr, n); }
출력
Number of pairs: 2