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

C++ में समान अंक वाले फैक्टोरियल उत्पाद के साथ अधिकतम संख्या


दिए गए कार्य को देखते हुए किसी भी अग्रणी या अनुगामी शून्य के बिना अधिकतम संख्या ज्ञात करना है या जिनके अंकों के भाज्य का गुणनफल दी गई संख्या N के अंकों के भाज्य के गुणनफल के बराबर है।

आइए अब एक उदाहरण का उपयोग करके समझते हैं कि हमें क्या करना है -

इनपुट - एन =4912

आउटपुट - 73332222

स्पष्टीकरण - 4! *9! * 1! * 2! =7! *3! *3! *3! * 2! * 2! *2! *2! =17,418,240

इनपुट - एन =340

आउटपुट - 3322

निम्नलिखित कार्यक्रम में उपयोग किया गया दृष्टिकोण इस प्रकार है

  • अधिकतम उत्तर प्राप्त करने के लिए हमें दी गई संख्या को अभाज्य संख्याओं के भाज्य के गुणनफल के रूप में व्यक्त करना होगा।

    यदि दी गई संख्या में केवल शून्य और एक है तो आउटपुट खोजना संभव नहीं है।

  • फ़ंक्शन में MaxNum() अंकों की कुल संख्या को संग्रहीत करने के लिए int प्रकार का एक वैरिएबल total_digits बनाएं और प्रत्येक होने वाली संख्या की आवृत्तियों को संग्रहीत करने के लिए एक अन्य सरणी Frq[] ={0} प्रकार int को प्रारंभ करें।

  • i=0 से i

  • यदि वर्तमान अंक अभाज्य है, तो बस Frq [] सरणी की उस स्थिति में 1 जोड़ें।

  • बाकी का अंक अभाज्य नहीं है, तो अलग से अगर स्टेटमेंट चेक करते हैं कि यह 4, 6, 8 या 9 है या नहीं और फिर इसे इसके मूल प्राइम फैक्टोरियल में तोड़ दें और तदनुसार आवृत्ति बढ़ाएं।

  • अंतिम उत्तर को संगृहीत करने के लिए एक खाली स्ट्रिंग 'ans' बनाएं।

  • अंतिम चरण पर आगे बढ़ने से पहले, जांच लें कि क्या संख्या में केवल एक और शून्य हैं। यदि ऐसा है तो बस मूल स्ट्रिंग लौटा दें अन्यथा अगले चरण पर आगे बढ़ें।

  • i=9 से i>=2 तक लूप। एक चर C =Frq [i] प्रकार int को प्रारंभ करें और लूप के अंदर स्थिति के साथ थोड़ी देर लूप बनाएं जबकि (C--) जिसमें अंतिम उत्तर को स्ट्रिंग में संग्रहीत करने के लिए ans+=(char)(i+48) डालें उत्तर.

उदाहरण

#include <bits/stdc++.h>
using namespace std;
string MaxNum(string str){
   int total_digits = str.length();
   int Frq[15] = { 0 };
   //Obtaining the frequency of every digit
   for (int i = 0; i < total_digits; i++){
      if (str[i] == '1'|| str[i] == '2'|| str[i] == '3'|| str[i] == '5'|| str[i] == '7'){
         Frq[str[i] - 48] += 1;
      }
      // 4! = 2! * 2! * 3!
      if (str[i] == '4'){
         Frq[2] += 2;
         Frq[3]++;
      }
      // 6! = 5! * 3!
      if (str[i] == '6'){
         Frq[5]++;
         Frq[3]++;
      }
      // 8! = 7! * 2! * 2! * 2!
      if (str[i] == '8'){
         Frq[7]++;
         Frq[2] += 3;
      }
      // 9! = 7! * 3! * 3! * 2!
      if (str[i] == '9'){
         Frq[7]++;
         Frq[3] += 2;
         Frq[2]++;
      }
   }
   string ans = "";
   //If number has only 1 or 0
   if (Frq[1] == total_digits || Frq[0] == total_digits || (Frq[0] + Frq[1]) == total_digits){
      return str;
   }
   else{
      //Maximum number possible
      for (int i = 9; i >= 2; i--){
         int C = Frq[i];
         while (C--){
            ans += (char)(i + 48);
         }
      }
      return ans;
   }
}
//Main function
int main(){
   string str = "340";
   cout << MaxNum(str);
   return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो हमें निम्न आउटपुट मिलेगा -

3322

  1. C++ में समान संख्या में सेट बिट्स के साथ संख्याओं को जोड़कर अधिकतम योग

    समस्या कथन N संख्याओं की एक सरणी को देखते हुए, कार्य अधिकतम योग ज्ञात करना है जो समान संख्या में सेट बिट्स के साथ संख्याओं को जोड़कर प्राप्त किया जा सकता है उदाहरण यदि इनपुट ऐरे {2, 5, 8, 9, 10, 7} है तो आउटपुट 14 होगा - 2 में सेट बिट्स की संख्या 1 है 5 में सेट बिट्स की संख्या 2 है 8 में

  1. C++ में अधिकतम उत्पाद चौगुनी संख्या ज्ञात कीजिए

    मान लीजिए कि हमारे पास n तत्वों के साथ एक पूर्णांक सरणी है। हमें सरणी में चौगुनी का अधिकतम गुणनफल खोजना है। तो अगर सरणी [3, 5, 20, 6, 10] की तरह है, तो अंतिम उत्पाद 6000 है, और चौगुनी में तत्व 10, 5, 6, 20 है इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - सरणी को आरोही क्रम में क्रमबद्ध करें मान

  1. C++ में दिए गए उत्पाद के साथ N पूर्णांकों की अधिकतम GCD

    मान लीजिए कि हम दो पूर्णांक N और P हैं। P, N अज्ञात पूर्णांकों का गुणनफल है। हमें उन पूर्णांकों का अधिकतम संभव GCD ज्ञात करना है। मान लीजिए एन =3, और पी =24, तो अलग-अलग समूह होंगे जैसे {1, 1, 24}, {1, 2, 12}, {1, 3, 8}, {1, 4, 6}, {2 , 2, 6}, {2, 3, 4}। जीसीडी हैं:1, 1, 1, 1, 2, 1. तो उत्तर यहां 2 ह