ধরুন আমাদের একটি সংখ্যা n আছে, আমাদের ধনাত্মক ধারাবাহিক মানের তালিকার সংখ্যা খুঁজে বের করতে হবে যা n পর্যন্ত যোগ করে।
সুতরাং, যদি ইনপুটটি n =15 এর মত হয়, তাহলে আউটপুট হবে 4, কারণ সম্ভাব্য তালিকাগুলি হল:[1, 2, 3, 4, 5], [4, 5, 6], [7, 8], এবং [১৫]।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব:
- শুরু :=1, শেষ :=1, x :=(n + 1)
- সমষ্টি :=0
- শেষে <=x, do:
- সমষ্টি :=যোগফল + শেষ
- যখন যোগফল>=n, do:
- যদি যোগফল 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