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

C++-এ n = x + n XOR x সমীকরণের সমাধান সংখ্যা বের করুন


এই আর্টিকেলে আমরা n = x + n ⊕ x সমীকরণের সমাধান সংখ্যা বের করব, অর্থাৎ দেওয়া n মান দেওয়ায় x-এর কতগুলো মান সম্ভব যাতে n = x + n ⊕ x সন্তুষ্ট হয়, যেখানে ⊕ বোঝায় XOR অপারেশন।

এখন আমরা উপযুক্ত উদাহরণ সহ n = x + n ⊕ x সমীকরণের সমাধান সংখ্যা সম্পর্কে সম্পূর্ণ আলোচনা করব।

ব্রুট ফোর্স পদ্ধতি

আমরা সহজে ব্রুট ফোর্স পদ্ধতি अपना করতে পারি সমাধান সংখ্যা বের করতে, অর্থাৎ দেওয়া n মান için x-এর প্রতিটি পূর্ণসংখ্যা মান 0 থেকে শুরু করে যাচাই করব সমীকরণ সন্তুষ্ট হয় কিনা, x-এর মান n-এর চেয়ে বড় হবে না কারণ n-এর চেয়ে বড় মান (n ⊕ x)-এর সাথে যোগ করলে কখনোই n আসবে না।

উদাহরণ

n = 3-এর জন্য x-এর একটি মান খুঁজুন?

   n = x + n ⊕ x
x = 0 বসিয়ে,    3 = 0 + 3 ⊕ 0
3 ⊕ 0 = 3,    3 = 3
   LHS = RHS (x = 0 সমীকরণ সন্তুষ্ট করে)
তবে, x = 0 হল সমাধানlerden একটি

উদাহরণ

#include <bits/stdc++.h> using namespace std; int main(){     int n = 3, c=0;     for (int x = 0; x <= n; ++x)// 0 থেকে n পর্যন্ত x-এর মান দেয়া লুপ         if (n == x + n ^ x)// x-এর মান সমীকরণ সন্তুষ্ট করে কিনা চেক             ++c;     cout  << "Number of possible solutions : " << c;     return 0; }

আউটপুট

Number of possible solutions : 4

এটি n = x + n ⊕ x সমীকরণের সমাধান সংখ্যা বের করার সহজ C++ প্রোগ্রাম ব্রুট ফোর্স পদ্ধতিতে।

দক্ষ পদ্ধতি (Efficient Approach)

এই পদ্ধতিতে, যদি আমরা n-কে বাইনারি রূপে দেখি, তবে আমাদের সেট বিট (1) সংখ্যা বের করতে হবে। সমীকরণ দেখে বলা যায় যদি n-এ কোনো বিট সেট থাকে, তবে x-এও সেট থাকবে বা n ⊕ x-এ সেট থাকবে কারণ 1 ⊕ 1 = 0। অর্থাৎ n ⊕ x-এ সেট বিট নেই, তাই এখন আমরা n-এ সেট প্রতিটি বিটের জন্য পারমুটেশন সংখ্যা বের করতে পারি, অর্থাৎ 2^(সেট বিট সংখ্যা)।

উদাহরণ

#include <bits/stdc++.h> using namespace std; int main (){     int n = 3, no_of_setbits = 0;    // n ইনিশিয়ালাইজ এবং সেট বিট কাউন্ট ০     while (n != 0){         no_of_setbits = no_of_setbits + (n % 2);    // চেক করো num-এ সেট বিট আছে কিনা         n = n / 2;     }     int result = 1 << no_of_setbits;    // 2^setbits দিয়ে সম্ভাব্য সমাধান সংখ্যা হিসাব     cout << " Number of possible solutions : " << result;     return 0; }

আউটপুট

Number of possible solutions : 4

প্রোগ্রামের জটিলতা

এই পদ্ধতির সময় জটিলতা O(n), কারণ আমরা এখানে ব্রুট ফোর্স अपना করেছি। আমরা আরও দক্ষ পদ্ধতি अपना করে প্রোগ্রামের দক্ষতা বাড়াতে পারি।

উপসংহার

এই আর্টিকেলে আমরা n = x + n ⊕ x সমীকরণের সমাধান সংখ্যা বের করার সমস্যা সমাধান করেছি। আমরা এই সমস্যার জন্য C++ প্রোগ্রাম এবং সমাধানের পূর্ণ পদ্ধতি শিখেছি। একই প্রোগ্রাম C, Java, Python বা অন্য ভাষায় লেখা যায়। আশা করি এই আর্টিকেলটি সহায়ক হবে।


  1. C++ ব্যবহার করে পেন্টাগোনাল পিরামিডাল সংখ্যা নির্ণয় করুন

  2. C++ দিয়ে একটি স্ট্রিংয়ের সাবস্ট্রিং-এর সংখ্যা বের করা

  3. C++-এ ট্রেন স্টপেজ স্টেশন সংখ্যা বের করুন

  4. C++-এ সেটে রিফ্লেক্সিভ রিলেশন সংখ্যা বের করুন