मान लीजिए कि हमारे पास एक संख्या n है, हमें n तक के धनात्मक क्रमागत मानों की सूचियों की संख्या ज्ञात करनी है।
इसलिए, यदि इनपुट n =15 जैसा है, तो आउटपुट 4 होगा, क्योंकि संभावित सूचियाँ हैं:[1, 2, 3, 4, 5], [4, 5, 6], [7, 8], और [15]।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
- शुरू करें:=1, अंत:=1, x:=(n + 1)
- योग :=0
- अंत में <=x, करें:
- योग :=योग + अंत
- जबकि योग>=n, करें:
- यदि योग n के समान है, तो:
- (गिनती 1 से बढ़ाएं)
- योग :=योग - प्रारंभ
- (1 से शुरू वृद्धि)
- यदि योग n के समान है, तो:
- (1 से अंत बढ़ाएं)
- वापसी की संख्या + 1
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें:
उदाहरण
#include
using namespace std;
int solve(int n) {
int begin=1,end=1,x=(n+1)/2,count=0;
long int sum=0;
while(end <= x){
sum += end;
while(sum >= n){
if(sum == n)
count++;
sum -= begin;
begin++;
}
end++;
}
return count+1;
}
main(){
cout << (solve(15));
} इनपुट
15
आउटपुट
4