একটি পূর্ণসংখ্যা অ্যারে দেওয়া আছে। যেসব যোড়ার XOR ফলাফল বিজোড় (odd) হবে, তাদের সংখ্যা গণনা করুন।
মূল লজিক
XOR ফলাফল বিজোড় হলে একটি সংখ্যা জোড় এবং অন্যটি বিজোড় হতে হবে।
তাই, উত্তর = (জোড় সংখ্যার কাউন্ট) × (বিজোড় সংখ্যার কাউন্ট)
উদাহরণ
ইনপুট: [2, 8, 1, 5, 11]
জোড়: 2, 8 (২টি) | বিজোড়: 1, 5, 11 (৩টি)
আউটপুট: 2 × 3 = 6
C++ বাস্তবায়ন
#include
using namespace std;
int Odd_XOR(int arr[], int size) {
int even = 0, odd = 0;
for (int i = 0; i < size; i++) {
if (arr[i] % 2 == 0) even++;
else odd++;
}
return even * odd;
}
int main() {
int arr[] = {2, 6, 1, 4};
int size = sizeof(arr) / sizeof(arr[0]);
cout << "Odd XOR pairs: " << Odd_XOR(arr, size);
return 0;
}
সময় জটিলতা
O(n) - একবার ট্রাভার্স। স্পেস O(1)।
XOR সত্য টেবিল পর্যালোচনা
| A | B | A XOR B |
|---|---|---|
| Even (0) | Even (0) | Even (0) |
| Odd (1) | Even (0) | Odd (1) |
| Even (0) | Odd (1) | Odd (1) |
| Odd (1) | Odd (1) | Even (0) |