Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ . का प्रयोग करके n =x + n x के हलों की संख्या ज्ञात कीजिए

इस लेख में हम समीकरण n =x + n x के हल की संख्या ज्ञात करने जा रहे हैं, अर्थात हमें दिए गए मान n के साथ संभव x के मानों की संख्या ज्ञात करने की आवश्यकता है जैसे कि n =x + n ⊕ x जहां XOR ऑपरेशन का प्रतिनिधित्व करता है ।

अब हम उपयुक्त उदाहरणों के साथ n =x + n x के हलों की संख्या के संबंध में पूरी जानकारी पर चर्चा करेंगे।

ब्रूट फ़ोर्स मेथड

हम समाधान की संख्या ज्ञात करने के लिए ब्रूट फोर्स दृष्टिकोण का सरल उपयोग कर सकते हैं, अर्थात n के दिए गए मान के लिए हम 0 से शुरू होने वाले x के प्रत्येक पूर्णांक मान को लागू करते हैं और सत्यापित करते हैं कि समीकरण संतुष्ट है या नहीं, x का मान इससे कम या बराबर होना चाहिए n क्योंकि (n ⊕ x) के साथ n से बड़ा मान जोड़ने पर उत्तर के रूप में n कभी वापस नहीं आएगा।

उदाहरण

n =3 के लिए x का एक मान ज्ञात कीजिए?

   n = x + n ⊕ x
Putting x = 0,
   3 = 0 + 3 ⊕ 0
3 ⊕ 0 = 3,
   3 = 3
   LHS = RHS(x = 0 satisfy the equation)
So, x = 0 is one of the solution

उदाहरण

#include <bits/stdc++.h>
using namespace std;
int main(){
    int n = 3, c=0;
    for (int x = 0; x <= n; ++x)// loop for giving value of x from 0 to n
        if (n == x + n ^ x)//checking if value of x satisfies the equation
            ++c;
    cout  << "Number of possible solutions : " << c;
    return 0;
}

आउटपुट

Number of possible solutions : 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;    // initialising n with value and taking count of set bits as 0
    while (n != 0){
        no_of_setbits = no_of_setbits + (n % 2);    // checking if num contains set bit.
        n = n / 2;
    }
    int result = 1 << no_of_setbits;    // calculating no. of possible solution with 2^setbits
    cout << " Number of possible solutions : " << result;
    return 0;
}

आउटपुट

Number of possible solutions : 4

कार्यक्रम की जटिलता

इस दृष्टिकोण की समय जटिलता ओ (एन) है, क्योंकि हम यहां ब्रूट फोर्स लागू कर रहे हैं। हम कार्यक्रम की दक्षता में सुधार के लिए अधिक कुशल तरीके लागू कर सकते हैं।

निष्कर्ष

इस लेख में, हम कई समाधान खोजने के लिए एक समस्या का समाधान करते हैं -

एन =एक्स + एन एक्स। हमने इस समस्या के लिए C++ प्रोग्राम और पूरा तरीका भी सीखा जिसके द्वारा हमने इस समस्या को हल किया। हम उसी प्रोग्राम को अन्य भाषाओं जैसे सी, जावा, पायथन और अन्य भाषाओं में लिख सकते हैं। आशा है कि आपको यह लेख मददगार लगा होगा।


  1. C++ का उपयोग करके एक स्ट्रिंग के सबस्ट्रिंग की संख्या ज्ञात करें

    इस लेख में, आप किसी दिए गए स्ट्रिंग में बनाए जा सकने वाले सबस्ट्रिंग (गैर-रिक्त) की संख्या को खोजने के तरीकों के बारे में जानेंगे। Input : string = “moon” Output : 10 Explanation: Substrings are ‘m’, ‘o’, ‘o’, ‘n’, ‘mo’, &lsqu

  1. C++ . का उपयोग करके स्टॉपिंग स्टेशनों की संख्या ज्ञात कीजिए

    बिंदु X और Y के बीच मध्यवर्ती ट्रेन स्टेशनों की संख्या n है। गिनें कि अलग-अलग तरीकों से ट्रेनों को s स्टेशनों पर रुकने के लिए व्यवस्थित किया जा सकता है जैसे कि कोई भी दो स्टेशन एक दूसरे के बगल में नहीं हैं। तो इस लेख में, हम स्टॉपिंग स्टेशनों की संख्या का पता लगाने के लिए हर संभव तरीके की व्याख्या क

  1. C++ का उपयोग करके सेट पर रिफ्लेक्सिव रिलेशंस की संख्या ज्ञात करें

    इस लेख में, हम एक सेट पर रिफ्लेक्सिव संबंधों की संख्या को खोजने के तरीकों की व्याख्या करेंगे। इस समस्या में, हमें संख्या n दी गई है, और n प्राकृत संख्याओं के समुच्चय पर, हमें प्रतिवर्ती संबंधों की संख्या निर्धारित करनी होगी। चिंतनशील संबंध − समुच्चय A में एक संबंध प्रतिवर्ती कहलाता है यदि (a, a) R