কম্পিউটার টিউটোরিয়াল

অ্যারে-এ সমান সেট বিট বিশিষ্ট জোড়া গণনা C++-এ

একটি অ্যারে দেওয়া থাকলে, কতটি জোড়ার দুটি উপাদানের সেট বিট (বাইনারি রিপ্রেজেন্টেশনে ১-এর সংখ্যা) সমান তা গণনা করতে হবে।

উদাহরণ

ইনপুট: arr = [6, 5, 1, 3, 7]

বাইনারি: 6=110(২), 5=101(২), 1=1(১), 3=11(২), 7=111(৩)

বৈধ জোড়া: (6,5), (6,3), (5,3) → মোট 3টি

অ্যালগরিদম

  1. নেস্টেড লুপ চালান সব জোড়া যাচাই করতে।
  2. প্রতিটি জোড়ার জন্য __builtin_popcount(arr[i]) == __builtin_popcount(arr[j]) চেক করুন।
  3. সত্য হলে কাউন্ট বাড়ান।

সময় জটিলতা: 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
  1. C++-এ সেট বিট K সমান থাকা অ্যারেের সব উপাদানের XOR

  2. C++-এ K বিটে আলাদা হয় এমন অ্যারে জোড়া গণনা

  3. C++ ব্যবহার করে অ্যারেতে a % b = k সেটি করার সব জোড়া (a, b) বের করা

  4. C++-এ সেট বিট কাউন্ট অনুযায়ী অ্যারে সর্ট করা