हमें एक धनात्मक संख्या N दी गई है। लक्ष्य उन तरीकों की संख्या गिनना है जिनसे संख्या N को 3 भागों में विभाजित किया जा सकता है। भाग समान या असमान हो सकते हैं। N की सीमा [1,5000] में है।
हम इसे 3 भागों के लिए तीन फॉर लूप का उपयोग करके करेंगे। सबसे आंतरिक लूप में जांचेंगे कि तीनों का योग N के बराबर है या नहीं। यदि सत्य है, तो तरीकों की संख्या बढ़ाएं।
उदाहरण से समझते हैं
इनपुट - N=5
आउटपुट - N को 3 भागों में विभाजित करने के तरीकों की संख्या: 2
व्याख्या - 5 को (1,1,3) और (1,2,2) के योग के रूप में दिखाया जा सकता है
इनपुट - N=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 लेते हैं।
फ़ंक्शन divideN(int n) n लेता है और उन तरीकों की संख्या लौटाता है जिनसे n को 3 भागों में विभाजित किया जा सकता है।
प्रारंभिक चर count को 0 से आरंभ करें तरीकों की संख्या के लिए।
संख्या के प्रत्येक भाग के लिए तीन फॉर लूप का उपयोग करके पार करें।
बाहरी लूप 1<=i
जांचें कि i, j और k का योग n के बराबर है या नहीं। यदि सत्य है तो काउंट बढ़ाएं।
सभी लूप के अंत में count में 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<< "N को 3 भागों में विभाजित करने के तरीकों की संख्या: "<<divideN(N); return 0; } आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा -
N को 3 भागों में विभाजित करने के तरीकों की संख्या: 20833