একটি পূর্ণসংখ্যা অ্যারে দেওয়া আছে। বিটওয়াইজ AND অপারেশনের ফলাফল জোড় (even) হওয়া যোড়াগুলোর সংখ্যা গণনা করুন।
সত্য টেবিল (AND)
| A | B | A AND B |
|---|---|---|
| 0 | 0 | 0 |
| 1 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 1 | 1 |
মূল লজিক
AND ফলাফল জোড় (LSB=0) হলে কমপক্ষে একটি অপারেন্ড জোড় হতে হবে।
সুতরাং: উত্তর = মোট যোড়া - (বিজোড়_কাউন্ট C 2)
C++ বাস্তবায়ন
#include
using namespace std;
int count_pair(int arr[], int size) {
int odd = 0;
for (int i = 0; i < size; i++)
if (arr[i] % 2 != 0) odd++;
int total_pairs = size * (size - 1) / 2;
int odd_pairs = odd * (odd - 1) / 2;
return total_pairs - odd_pairs;
}
int main() {
int arr[] = {2, 5, 1, 8, 3};
int size = sizeof(arr) / sizeof(arr[0]);
cout << "Even AND pairs: " << count_pair(arr, size);
return 0;
}
উদাহরণ
অ্যারে: [2, 5, 1, 8, 3]
বিজোড়: 5, 1, 3 (৩টি) → বিজোড় যোড়া = C(3,2) = 3
মোট যোড়া = C(5,2) = 10
জোড় AND যোড়া = 10 - 3 = 7