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