हमें एक धनात्मक संख्या N दी गई है। लक्ष्य उन तरीकों की संख्या गिनना है जिनमें संख्या N को 3 भागों में विभाजित किया जा सकता है। भाग समान हो सकते हैं या नहीं भी हो सकते हैं। N रेंज [1,5000] में है।
हम संख्या के 3 भागों के लिए तीन फॉर लूप का उपयोग करके ऐसा करेंगे। अंतरतम लूप पर जाँच करें कि तीनों का योग N के बराबर है। यदि सत्य है, तो तरीकों की संख्या बढ़ाएँ।
आइए उदाहरणों से समझते हैं।
इनपुट -एन=5
आउटपुट − N को 3 भागों में विभाजित करने के तरीकों की संख्या:2
स्पष्टीकरण -5 को (1,1,3) और (1,2,2) के योग के रूप में दिखाया जा सकता है
इनपुट -एन=9
आउटपुट − N को 3 भागों में विभाजित करने के तरीकों की संख्या:7
स्पष्टीकरण - 9 को :(1, 1, 7), (1, 2, 6), (1, 3, 5), (1, 4, 4), (2, 2, 5), ( 2, 3,4) और (3, 3, 3)।
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
-
हम 1 और 5000 के बीच के मान के साथ आरंभ किया गया एक पूर्णांक N लेते हैं।
-
फंक्शन डिवाइडN(int n) n लेता है और उन तरीकों की संख्या देता है जिनमें n को 3 भागों में विभाजित किया जा सकता है।
-
तरीकों की संख्या के लिए प्रारंभिक चर गणना को 0 के रूप में लें।
-
संख्या के प्रत्येक भाग के लिए तीन फॉर लूप का उपयोग करके ट्रैवर्स करें।
-
1<=i
-
जांचें कि क्या i, j और k का योग n के बराबर है। अगर सही है तो इंक्रीमेंट काउंट।
-
सभी लूपों के अंत में n को तीन भागों में विभाजित करने के लिए काउंट की कुल संख्या होगी।
-
परिणाम के रूप में गिनती लौटाएं।
उदाहरण
#include <bits/stdc++.h> using namespace std; int divideN(int n){ int count = 0; for (int i = 1; i < n; i++){ for (int j = i ; j < n; j++){ for (int k = j; k < n; k++){ int sum=i+j+k; if(sum==n) { count++; } } } } return count; } int main(){ int N=500; cout <<endl<< "Number of ways to divide N in 3 parts : "<<divideN(N); return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
Number of ways to divide N in 3 parts: 20833