ধরুন আমাদের একটি ধনাত্মক পূর্ণসংখ্যা N আছে, আমাদের খুঁজে বের করতে হবে যে আমরা একে ধারাবাহিক ধনাত্মক পূর্ণসংখ্যার যোগফল হিসাবে কতগুলি ভিন্ন উপায়ে লিখতে পারি?
সুতরাং, যদি ইনপুট 10 এর মত হয়, তাহলে আউটপুট 3 হবে, কারণ আমরা 10 কে 5 + 5 এবং 7 + 3 হিসাবে উপস্থাপন করতে পারি, তাই দুটি ভিন্ন উপায় রয়েছে।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
ret :=1
-
আরম্ভ করার জন্য i :=2, (i 1 দ্বারা বাড়ান), −
করুন-
যোগফল :=(i * (i + 1)) / 2
-
যোগফল> N হলে −
-
লুপ থেকে বেরিয়ে আসুন
-
-
rem :=N - যোগফল
-
ret :=ret + (1 যখন rem mod i 0 হয়, অন্যথায় 0)
-
-
রিটার্ন রিটার্ন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
#include <bits/stdc++.h> using namespace std; class Solution { public: int consecutiveNumbersSum(int N) { int ret = 1; for(int i = 2; ; i++){ int sum = (i * (i + 1)) / 2; if(sum > N) break; int rem = N - sum; ret += (rem % i == 0); } return ret; } }; main(){ Solution ob;cout << (ob.consecutiveNumbersSum(10)); }
ইনপুট
10
আউটপুট
2