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

C++ में पूर्णांक को अद्वितीय प्राकृतिक संख्याओं के n-वें घात के योग के रूप में व्यक्त करने के तरीकों की संख्या ढूंढना


परिचय

इस ट्यूटोरियल में हम एक ऐसा प्रोग्राम लिखेंगे जो यह ढूंढता है कि एक पूर्णांक को दिए गए n-वें घात की अद्वितीय संख्याओं के योग के रूप में कितने तरीकों से व्यक्त किया जा सकता है।

हमारे पास दो पूर्णांक number और power हैं। और हमें यह ढूंढना है कि दिए गए number को अद्वितीय प्राकृतिक संख्याओं के n-वें घात के योग के रूप में कितने तरीकों से दर्शाया जा सकता है। आइए एक उदाहरण देखते हैं।

इनपुट - number = 50, power = 2

आउटपुट - 3

हम इस समस्या को हल करने के लिए रिकर्सन (recursion) का उपयोग करेंगे।

समस्या समाधान के चरण

  1. संख्या और पावर को इनिशियलाइज़ करें।
  2. उपयुक्त नाम के साथ एक रिकर्सिव फंक्शन लिखें। यह number, power और i को आर्गुमेंट्स के रूप में स्वीकार करता है।
  3. यदि number शून्य से कम है या pow(i, power) number से अधिक है, तो 0 वापस करें।
  4. यदि संख्या शून्य है या pow(i, power) संख्या के बराबर है, तो 1 वापस करें।
  5. कुल तरीकों की गणना के लिए फंक्शन के दो रिकर्सिव कॉल हैं:
    • i बढ़ाएं।
    • पहले रिकर्सिव कॉल में, दी गई संख्या से कम संख्याओं की जांच करें।
    • दूसरे रिकर्सिव कॉल में, दी गई संख्या की जांच करें।

उदाहरण कोड

#include <bits/stdc++.h>
using namespace std;

int findPossibleWaysCount(int number, int power, int i = 1) {
    if(number < 0 || number < pow(i, power)) {
        return 0;
    }
    if(number == 0 || number == pow(i, power)) {
        return 1;
    }
    return findPossibleWaysCount(number - pow(i, power), power, i + 1) + findPossibleWaysCount(number, power, i + 1);
}

int main() {
    // संख्या और पावर इनिशियलाइज़ करना
    int number = 50, power = 2;
    cout << findPossibleWaysCount(number, power) << endl;
    return 0;
}

आउटपुट

3

व्याख्या

50 को वर्गों (power=2) के योग के रूप में 3 तरीकों से व्यक्त किया जा सकता है: 1² + 7² = 1 + 49 = 50 5² + 5² = 25 + 25 = 50 (लेकिन अद्वितीय संख्याएं चाहिए, तो यह अमान्य) 1² + 3² + 4² + 5² = 1 + 9 + 16 + 25 = 51 (नहीं) सही संयोजन: 1²+7², 5²+5²(अमान्य), और अन्य संयोजन।

निष्कर्ष

रिकर्सिव दृष्टिकोण सभी संभावित संयोजनों का पता लगाता है। बड़ी संख्याओं के लिए डायनामिक प्रोग्रामिंग का उपयोग करके अनुकूलित किया जा सकता है। यदि आपके कोई प्रश्न हैं, तो कमेंट सेक्शन में पूछें।


  1. C++ में जांचें कि क्या संख्या को दो त्रिकोणीय संख्याओं के योग के रूप में दर्शाया जा सकता है C++ में जांचें कि क्या संख्या को दो त्रिकोणीय संख्याओं के योग के रूप में दर्शाया जा सकता है

    इस खंड में, हम देखेंगे कि क्या हम एक संख्या को दो त्रिकोणीय संख्याओं के योग के रूप में व्यक्त कर सकते हैं या नहीं। त्रिकोणीय संख्याएं नीचे की तरह होती हैं - उदाहरण से, हम देख सकते हैं कि 1, 3, 6, 10 कुछ त्रिकोणीय संख्याएं हैं। हमें संख्या N (मान लीजिए 16) को दो त्रिकोणीय संख्याओं (6, 10) के योग के

  1. - C++ में रिकर्सन का उपयोग करके प्राकृतिक संख्याओं का योग खोजने का प्रोग्राम

    प्राकृतिक संख्याएँ 1 से शुरू होने वाले धनात्मक पूर्णांक हैं। प्राकृतिक संख्याओं का क्रम निम्नलिखित है: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10... पहली n प्राकृतिक संख्याओं का योग रिकर्सन का उपयोग करके खोजने का प्रोग्राम निम्नलिखित है। उदाहरण #include <iostream> using namespace std; int sum(int n) { &nbs

  1. - पायथन में nth घात के अद्वितीय संख्याओं के योग के रूप में संख्या प्राप्त करने के तरीकों की संख्या खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक संख्या x और दूसरी संख्या n है। हमें उन तरीकों की संख्या ज्ञात करनी है जिनसे हम x को कुछ अद्वितीय संख्याओं के nth घात के योग के रूप में प्राप्त कर सकते हैं।उदाहरण के लिए, यदि इनपुट x = 100 n = 2 है, तो आउटपुट 3 होगा क्योंकि संभावित समाधान हैं: 6^2 + 8^2, 10^2 और 1^2 + 3^2 + 4^2