এই আর্টিকেলে আমরা 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 বা অন্য ভাষায় লেখা যায়। আশা করি এই আর্টিকেলটি সহায়ক হবে।