समस्या विवरण
एक पूर्णांक 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)res0 है) तो गिनती बढ़ाएं। - अंत में हमारे पास
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