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