একটি অ্যারে দেওয়া থাকলে, কতটি জোড়ার দুটি উপাদানের সেট বিট (বাইনারি রিপ্রেজেন্টেশনে ১-এর সংখ্যা) সমান তা গণনা করতে হবে।
উদাহরণ
ইনপুট: arr = [6, 5, 1, 3, 7]
বাইনারি: 6=110(২), 5=101(২), 1=1(১), 3=11(২), 7=111(৩)
বৈধ জোড়া: (6,5), (6,3), (5,3) → মোট 3টি
অ্যালগরিদম
- নেস্টেড লুপ চালান সব জোড়া যাচাই করতে।
- প্রতিটি জোড়ার জন্য
__builtin_popcount(arr[i]) == __builtin_popcount(arr[j])চেক করুন। - সত্য হলে কাউন্ট বাড়ান।
সময় জটিলতা: O(n²)
C++ কোড উদাহরণ
#include <iostream>
using namespace std;
int countEqualSetBitPairs(int arr[], int n) {
int count = 0;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
if (__builtin_popcount(arr[i]) == __builtin_popcount(arr[j]))
count++;
}
}
return count;
}
int main() {
int arr[] = {6, 5, 1, 3, 7};
int n = sizeof(arr) / sizeof(arr[0]);
cout << "Count: " << countEqualSetBitPairs(arr, n);
return 0;
}
ইনপুট
[6, 5, 1, 3, 7]
আউটপুট
3