मान लीजिए कि हमारे पास एक धनात्मक पूर्णांक N है, तो हमें यह ज्ञात करना होगा कि हम इसे क्रमागत धनात्मक पूर्णांकों के योग के रूप में कितने भिन्न तरीकों से लिख सकते हैं?
इसलिए, यदि इनपुट 10 की तरह है, तो आउटपुट 3 होगा, ऐसा इसलिए है क्योंकि हम 10 को 5 + 5 और 7 + 3 के रूप में प्रस्तुत कर सकते हैं, इसलिए दो अलग-अलग तरीके हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
रिट :=1
-
इनिशियलाइज़ करने के लिए i :=2, (i को 1 से बढ़ाएँ), करें -
-
योग :=(i * (i + 1)) / 2
-
अगर योग> एन, तो -
-
लूप से बाहर आएं
-
-
रेम:=एन - योग
-
ret :=ret + (1 जब रेम मॉड मैं 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