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

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


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

उदाहरण के लिए

इनपुट

num=6

आउटपुट

Count of ways to express a number as sum of consecutive numbers are: 1

स्पष्टीकरण

The ways in which we can express ‘num’ as sum of consecutive natural
numbers: 1+2+3

इनपुट

num=19

आउटपुट

Count of ways to express a number as sum of consecutive numbers are: 1

स्पष्टीकरण

The ways in which we can express ‘num’ as sum of consecutive natural
numbers: 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 अंक से कम है।

  • इनपुट के रूप में एक पूर्णांक संख्या लें।

  • फ़ंक्शन sum_consecutive(int num) एक संख्या लेता है और 'num' को लगातार प्राकृतिक संख्याओं के योग के रूप में व्यक्त करने के तरीकों की गिनती देता है।

  • प्रारंभिक गणना 0 के रूप में लें।

  • अस्थायी चर रेस को फ्लोट के रूप में लें।

  • लूप के लिए i=1 से i*(i+1)/2

  • मान की गणना करें [ num - (i)*(i+1)/2 ] / (i+1) और res में स्टोर करें।

  • यदि res पूर्णांक है (res - (int)res 0 है) तो वृद्धि की गणना।

  • अंत में हमारे पास उन तरीकों के रूप में गिनती है जिनमें संख्या को लगातार प्राकृतिक संख्याओं के योग के रूप में दर्शाया जा सकता है।

  • परिणाम के रूप में वापसी की गिनती।

उदाहरण

#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<<"Count of ways to express a number as sum of consecutive numbers are: "<<sum_consecutive(num) << endl;
   return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -

Count of ways to express a number as sum of consecutive numbers are: 1

  1. C++ में एक सेट को k सबसेट में विभाजित करने के तरीकों की संख्या की गणना करें

    दो अंक e और p दिए गए हैं। लक्ष्य उन तरीकों की संख्या गिनना है जिनसे हम एक सेट के e तत्वों को p विभाजन/सबसेट में विभाजित कर सकते हैं। उदाहरण के लिए इनपुट e=4 p=2 आउटपुट Count of number of ways to partition a set into k subsets are: 7 स्पष्टीकरण If elements are: a b c d then ways to divide them into

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

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

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

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