আমাদের একটি সংখ্যা n দেওয়া আছে। লক্ষ্য হল x এর মান বের করা যাতে (n XOR x) = (n - x) শর্তটি পূরণ হয়। এখানে x-র পরিসর [0, n]।
উদাহরণ
ইনপুট: n = 10
আউটপুট: ৪
ব্যাখ্যা: মানগুলো: 0, 2, 8, 10।
ইনপুট: n = 15
আউটপুট: ১৬
ব্যাখ্যা: ০ থেকে ১৫ পর্যন্ত সব মান।
অ্যালগরিদম (দক্ষ পদ্ধতি)
বাইনারি রিপ্রেজেন্টেশন-এ:
1 XOR 0 = 1-0✓1 XOR 1 = 1-1✓0 XOR 0 ≠ 0-1✗0 XOR 1 ≠ 0-1✗
n-এর বাইনারি-এ যestar '১' আছে, সেগুলোর জন্য ২ ভাবে (০ বা ১) চয়ন করা যায়। যদি pটি '১' থাকে, তবে মোট 2^pটি ভ্যালিড x থাকবে।
nইনপুট নিন।n-কে বাইনারি স্ট্রিং-এ কনভার্ট করুন।- '১' বিটের সংখ্যা গণনা করুন।
- ফলাফল =
2^count।
C++ বাস্তবায়ন (দক্ষ)
#include <bits/stdc++.h>
using namespace std;
int count_values(int n) {
int count = 0;
string number = bitset<32>(n).to_string(); // 32-bit for safety
for (char c : number) {
if (c == '1') count++;
}
return (1 << count); // 2^count
}
int main() {
int n = 25;
cout << "Count of values of x <= n for which (n XOR x) = (n - x) are: "
<< count_values(n);
return 0;
}
আউটপুট
Count of values of x <= n for which (n XOR x) = (n - x) are: 8