Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

นับคู่ของอาร์เรย์ทั้งหมดที่แตกต่างกันใน K บิตใน C++


ในบทช่วยสอนนี้ เราจะพูดถึงโปรแกรมเพื่อค้นหาจำนวนคู่ของอาร์เรย์ที่แตกต่างกันใน K บิต

สำหรับสิ่งนี้ เราจะได้รับอาร์เรย์และจำนวนเต็ม K หน้าที่ของเราคือค้นหาจำนวนคู่ที่ต่างกันด้วย K บิตในการแทนค่าไบนารี

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
//counting number of bits in
//binary representation
int count_bit(int n){
   int count = 0;
   while (n) {
      if (n & 1)
         ++count;
      n >>= 1;
   }
   return count;
}
//counting the number of pairs
long long count_pair(int arr[], int n, int k) {
   long long ans = 0;
   for (int i = 0; i < n-1; ++i) {
      for (int j = i + 1; j < n; ++j) {
         int xoredNum = arr[i] ^ arr[j];
         if (k == count_bit(xoredNum))
            ++ans;
      }
   }
   return ans;
}
int main() {
   int k = 2;
   int arr[] = {2, 4, 1, 3, 1};
   int n = sizeof(arr)/sizeof(arr[0]);
   cout << "Total pairs for k = " << k << " are " << count_pair(arr, n, k) << "\n";
   return 0;
}

ผลลัพธ์

5