ধরুন আমাদের একটি সংখ্যা 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