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

C++ में किसी संख्या को लगातार संख्याओं के योग के रूप में व्यक्त करने के तरीकों की गिनती


समस्या विवरण

एक पूर्णांक n इनपुट के रूप में दिया गया है। लक्ष्य उन तरीकों की संख्या ज्ञात करना है जिनसे हम 'num' को दो या अधिक लगातार प्राकृतिक संख्याओं के योग के रूप में दर्शा सकते हैं। उदाहरण के लिए, यदि n 3 है तो इसे योग (1+2) के रूप में दर्शाया जा सकता है इसलिए कुल 1 तरीका।

उदाहरण

इनपुट

num=6

आउटपुट

लगातार संख्याओं के योग के रूप में व्यक्त करने के तरीकों की संख्या: 1

व्याख्या

'num' को लगातार प्राकृतिक संख्याओं के योग के रूप में व्यक्त करने के तरीके: 1+2+3

इनपुट

num=19

आउटपुट

लगातार संख्याओं के योग के रूप में व्यक्त करने के तरीकों की संख्या: 1

व्याख्या

'num' को लगातार प्राकृतिक संख्याओं के योग के रूप में व्यक्त करने के तरीके: 9+10

दृष्टिकोण

इस दृष्टिकोण में हम संख्या को योग के रूप में दर्शाएंगे: (a + a+1 + a+2...+ a+i)।

जो बन जाता है a*(L+1) बार + 1+2+3+4...+i = a*(i+1) + i*(i+1)/2। (i प्राकृतिक संख्याओं का योग) num = a*(i+1) + i*(i+1)/2। a = [num - (i)*(i+1)/2] / (i+1)।

हम इसे i=1 से i*(i+1)/2, num से कम होने तक करेंगे।

एल्गोरिदम चरण

  • एक पूर्णांक num इनपुट के रूप में लें।
  • फंक्शन sum_consecutive(int num) एक num लेता है और 'num' को लगातार प्राकृतिक संख्याओं के योग के रूप में व्यक्त करने के तरीकों की संख्या लौटाता है।
  • प्रारंभिक गिनती 0 लें।
  • अस्थायी चर res को float के रूप में लें।
  • for लूप का उपयोग करके i=1 से i*(i+1)/2 < num तक पार करें।
  • मान [num - (i)*(i+1)/2] / (i+1) की गणना करें और res में संग्रहीत करें।
  • यदि res पूर्णांक है (res - (int)res 0 है) तो गिनती बढ़ाएं।
  • अंत में हमारे पास count होगा उन तरीकों के रूप में जिनसे num को लगातार प्राकृतिक संख्याओं के योग के रूप में दर्शाया जा सकता है।
  • परिणाम के रूप में गिनती लौटाएं।

C++ कोड उदाहरण

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

int sum_consecutive(int num) {
    int count = 0;
    int temp = num * 2;
    float res;
    for (int i = 1; i * (i + 1) < temp; i++) {
        int store = i + 1;
        res = (1.0 * num - (i * (i + 1)) / 2) / store;
        float check = res - (int)res;
        if(check == 0.0) {
            count++;
        }
    }
    return count;
}

int main() {
    int num = 20;
    cout << "लगातार संख्याओं के योग के रूप में व्यक्त करने के तरीकों की संख्या: " << sum_consecutive(num) << endl;
    return 0;
}

आउटपुट

लगातार संख्याओं के योग के रूप में व्यक्त करने के तरीकों की संख्या: 1
  1. C++ में एक सेट को k उपसमुच्चयों में विभाजित करने के तरीकों की संख्या गिनें C++ में एक सेट को k उपसमुच्चयों में विभाजित करने के तरीकों की संख्या गिनें

    समस्या विवरण दो संख्याएं e और p दी गई हैं। लक्ष्य उन तरीकों की संख्या गिनना है जिनसे हम एक सेट के e तत्वों को p पार्टीशन/उपसमुच्चयों में विभाजित कर सकते हैं। उदाहरण इनपुट e=4 p=2 आउटपुट सेट को k उपसमुच्चयों में विभाजित करने के तरीकों की संख्या: 7 व्याख्या यदि तत्व हैं: a b c d तो उन्हें 2 पार्टीशन

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

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

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

    यहां हम देखेंगे कि क्या एक संख्या को दो या अधिक क्रमागत संख्याओं के योग के रूप में दर्शाया जा सकता है या नहीं। मान लीजिए संख्या 12 है। इसे 3+4+5 के रूप में दर्शाया जा सकता है। इस समस्या को हल करने का एक सीधा और सबसे आसान तरीका है। यदि कोई संख्या 2 की घात है, तो इसे कुछ क्रमागत संख्याओं के योग के रू