मान लीजिए हमारे पास एक संख्या n है, हमें उन धनात्मक लगातार मानों की सूचियों की संख्या ढूंढनी है जिनका योग n तक होता है।
इसलिए, यदि इनपुट n = 15 जैसा है, तो आउटपुट 4 होगा, क्योंकि संभावित सूचियाँ हैं: [1, 2, 3, 4, 5], [4, 5, 6], [7, 8], और [15]।
समाधान दृष्टिकोण
इसे हल करने के लिए, हम निम्न चरणों का पालन करेंगे:
begin := 1,end := 1,x := (n + 1) / 2sum := 0- जब
end <= x, करें:sum := sum + end- जब
sum >= n, करें:- यदि
sumnके समान है, तो:- काउंट को 1 से बढ़ाएँ
sum := sum - beginbeginको 1 से बढ़ाएँ
- यदि
endको 1 से बढ़ाएँ
count + 1लौटाएँ
उदाहरण
#include <bits/stdc++.h>
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;
}
int main() {
cout << (solve(15));
return 0;
}
इनपुट
15
आउटपुट
4