ধরি আমাদের একটি সংখ্যা n আছে; আমাদের এমন লিস্টগুলোর সংখ্যা বের করতে হবে যারা ধনাত্মক সংলগ্ন (consecutive) মান দিয়ে গঠিত এবং তাদের যোগফল n।
উদাহরণস্বরূপ, ইনপুট n = 15 হলে আউটপুট হবে ৪, কারণ সম্ভাব্য লিস্ট গুলো: [1,2,3,4,5], [4,5,6], [7,8], এবং [15]।
সমাধানের ধাপসমূহ:
begin := 1, end := 1, x := (n + 1) / 2sum := 0while (end <= x):sum := sum + endwhile (sum >= n):- যদি
sum == nহয়:count++ sum := sum - beginbegin++
- যদি
end++
return 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));
}
ইনপুট
15
আউটপুট
4