Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में किसी संख्या को भागों में विभाजित करने के तरीकों की संख्या गिनें

हमें एक धनात्मक संख्या 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

  1. C++ में एक सेट को k सबसेट में विभाजित करने के तरीकों की संख्या की गणना करें

    दो अंक e और p दिए गए हैं। लक्ष्य उन तरीकों की संख्या गिनना है जिनसे हम एक सेट के e तत्वों को p विभाजन/सबसेट में विभाजित कर सकते हैं। उदाहरण के लिए इनपुट e=4 p=2 आउटपुट Count of number of ways to partition a set into k subsets are: 7 स्पष्टीकरण If elements are: a b c d then ways to divide them into

  1. C++ में एक आयत में वर्गों की संख्या गिनें

    =B. लक्ष्य उन वर्गों की संख्या का पता लगाना है जिन्हें LXB आकार का एक आयत समायोजित कर सकता है। ऊपर दिया गया चित्र 3 X 2 आकार का एक आयत दिखाता है। इसमें 2, 2X2 वर्ग और 6,1X1 वर्ग हैं। कुल वर्ग=6+2=8. LXB आकार के प्रत्येक आयत में L*B संख्या 1X1 वर्ग होती है। सबसे बड़े वर्ग BXB आकार के होते ह

  1. C++ में संख्या को विभाजित करने वाली संख्या में अंकों की संख्या ज्ञात कीजिए

    मान लीजिए एक नंबर दिया गया है। हमें उस संख्या के अंकों की संख्या गिननी है जो संख्या को समान रूप से विभाजित करती है। मान लीजिए कि संख्या 1012 है, परिणाम 3 है। तीन अंक 1, 1 और 2 हैं जो समान रूप से 1012 को विभाजित करते हैं। इसे हल करने के लिए, हम मॉड्यूलस ऑपरेशन का उपयोग करके संख्या के प्रत्येक अंक को