এই সমস্যায়, আমাদের একটি নাম্বার দেওয়া আছে। আমাদের কাজ হল নাম্বারের বাইনারি রিপ্রেজেন্টেশনে ০ এবং ১-এর কাউন্টের XOR বের করা।
একটি উদাহরণ দিয়ে সমস্যাটি বুঝতে পারি,
ইনপুট
n = 9
আউটপুট
0
ব্যাখ্যা
binary = 1001 Count of 0s = 2 Count of 1s = 2 2 ^ 2 = 0
এই সমস্যাটি সমাধান করতে, আমরা প্রথমে নাম্বারটিকে এর বাইনারি ইকুইভ্যালেন্ট-এ কনভার্ট করব এবং তারপর নাম্বারের প্রতিটি বিট ওভার ইটারেট করে ০ এবং ১ কাউন্ট করব এবং তারপর ০-এর কাউন্ট এবং ১-এর কাউন্টের XOR বের করব।
উদাহরণ
উপরোক্ত সমাধান ইলাস্ট্রেট করার প্রোগ্রাম,
#include <iostream>
using namespace std;
int countXOR10(int n) {
int count0s = 0, count1s = 0;
while (n) {
(n % 2 == 0) ? count0s++ : count1s++;
n /= 2;
}
return (count0s ^ count1s);
}
int main() {
int n = 21;
cout << "XOR of count of 0s and 1s in binary of " << n << " is " << countXOR10(n);
return 0;
}
আউটপুট
XOR of count of 0s and 1s in binary of 21 is 1