Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++를 사용하여 XOR이 0이 되도록 배열에서 쌍의 수를 찾습니다.

<시간/>

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