मान लीजिए कि हमारे पास एक संख्या 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