কম্পিউটার টিউটোরিয়াল

C++-এ (n XOR x) = (n - x) শর্ত পূরণ করা x-এর মান সংখ্যা গণনা


আমাদের একটি সংখ্যা 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 থাকবে।

  1. n ইনপুট নিন।
  2. n-কে বাইনারি স্ট্রিং-এ কনভার্ট করুন।
  3. '১' বিটের সংখ্যা গণনা করুন।
  4. ফলাফল = 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
  1. C++-এ বাইনারি রিপ্রেজেন্টেশনে ০ এবং ১-এর কাউন্টের XOR

  2. C++-এ প্যালিনড্রোম যেগুলো প্যালিনড্রোমের স্কোয়ার গণনা

  3. C++-এ দেওয়া XOR সমান হয় এমন জোড়া (Pair) গণনা

  4. C++-এ দুটি সংখ্যার কমন ডিভাইজর (Common Divisors of Two Numbers)