इस लेख में हम समीकरण n = x + n ⊕ x के समाधानों की संख्या ज्ञात करने जा रहे हैं, अर्थात हमें दिए गए मान n के साथ x के संभावित मानों की संख्या ढूंढनी है जैसे कि n = x + n ⊕ x जहां ⊕ XOR ऑपरेशन को दर्शाता है।
अब हम n = x + n ⊕ x के समाधानों की संख्या के बारे में पूरी जानकारी उपयुक्त उदाहरणों के साथ चर्चा करेंगे।
ब्रूट फोर्स विधि
हम समाधानों की संख्या ज्ञात करने के लिए सरल ब्रूट फोर्स दृष्टिकोण का उपयोग कर सकते हैं, अर्थात दिए गए n के मान के लिए हम 0 से शुरू होने वाले x के हर पूर्णांक मान को लागू करते हैं और सत्यापित करते हैं कि समीकरण संतुष्ट होता है या नहीं, 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 समाधानों में से एक है
उदाहरण
#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 << "संभावित समाधानों की संख्या : " << c; return 0; }आउटपुट
संभावित समाधानों की संख्या : 4
यह ब्रूट फोर्स विधि लागू करके n = x + n ⊕ x के समाधानों की संख्या ज्ञात करने का सरल C++ प्रोग्राम है।
कुशल दृष्टिकोण
इस दृष्टिकोण में, यदि हम 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 को मान से आरंभ करना और सेट बिट्स की गिनती को 0 लेना while (n != 0){ no_of_setbits = no_of_setbits + (n % 2); // जांचें कि क्या num में सेट बिट है n = n / 2; } int result = 1 << no_of_setbits; // 2^सेटबिट्स के साथ संभावित समाधानों की संख्या की गणना cout << " संभावित समाधानों की संख्या : " << result; return 0; }आउटपुट
संभावित समाधानों की संख्या : 4
प्रोग्राम की जटिलता
इस दृष्टिकोण की समय जटिलता O(n) है, क्योंकि हम यहां ब्रूट फोर्स लागू कर रहे हैं। हम प्रोग्राम की दक्षता में सुधार के लिए अधिक कुशल विधियां लागू कर सकते हैं।
निष्कर्ष
इस लेख में, हम n = x + n ⊕ x के समाधानों की संख्या ज्ञात करने की समस्या को हल करते हैं। हमने इस समस्या के लिए C++ प्रोग्राम और पूरा दृष्टिकोण भी सीखा जिससे हमने इस समस्या को हल किया। हम इसी प्रोग्राम को C, Java, Python और अन्य भाषाओं में लिख सकते हैं। आशा है आपको यह लेख उपयोगी लगा होगा।