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

Đếm tất cả các cặp với XOR đã cho trong C ++

Trong hướng dẫn này, chúng ta sẽ thảo luận về một chương trình để tìm số cặp với XOR đã cho.

Đối với điều này, chúng tôi sẽ được cung cấp một mảng và một giá trị. Nhiệm vụ của chúng ta là tìm số cặp có XOR bằng giá trị đã cho.

Ví dụ

#include<bits/stdc++.h>
using namespace std;
//returning the number of pairs
//having XOR equal to given value
int count_pair(int arr[], int n, int x){
   int result = 0;
   //managing with duplicate values
   unordered_map<int, int> m;
   for (int i=0; i<n ; i++){
      int curr_xor = x^arr[i];
      if (m.find(curr_xor) != m.end())
         result += m[curr_xor];
      m[arr[i]]++;
   }
   return result;
}
int main(){
   int arr[] = {2, 5, 2};
   int n = sizeof(arr)/sizeof(arr[0]);
   int x = 0;
   cout << "Count of pairs with given XOR = " << count_pair(arr, n, x);
   return 0;
}

Đầu ra

Count of pairs with given XOR = 1
đã cho