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

C++ में समान अंकों के फैक्टोरियल गुणनफल वाली अधिकतम संख्या

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

उदाहरण से समझते हैं

इनपुट - N = 4912

आउटपुट - 73332222

व्याख्या - 4! * 9! * 1! * 2! = 7! * 3! * 3! * 3! * 2! * 2! * 2! * 2! = 17,418,240

इनपुट - N = 340

आउटपुट - 3322

प्रयुक्त दृष्टिकोण

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

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

  • MaxNum() फंक्शन में, total_digits टाइप का एक वेरिएबल बनाएं कुल अंकों की संख्या स्टोर करने के लिए और Frq[] = {0} नामक एक ऐरे आरंभ करें प्रत्येक आने वाली संख्या की फ्रीक्वेंसी स्टोर करने के लिए।

  • i=0 से i<total_digits तक लूप चलाएं और हर अंक के लिए चेक करें कि यह अभाज्य है या नहीं।

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

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

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

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

  • i=9 से i>=2 तक लूप चलाएं। C = Frq[i] टाइप का एक वेरिएबल आरंभ करें और फॉर लूप के अंदर एक व्हाइल लूप बनाएं जिसकी शर्त while(C--) हो, जिसमें ans+=(char)(i+48) डालकर अंतिम उत्तर को स्ट्रिंग ans में स्टोर करें।

C++ प्रोग्राम उदाहरण

#include <bits/stdc++.h>
using namespace std;

string MaxNum(string str) {
    int total_digits = str.length();
    int Frq[15] = { 0 };
    
    // हर अंक की फ्रीक्वेंसी प्राप्त करना
    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 = "";
    
    // यदि संख्या में केवल 1 या 0 हैं
    if (Frq[1] == total_digits || Frq[0] == total_digits || (Frq[0] + Frq[1]) == total_digits) {
        return str;
    } else {
        // अधिकतम संभव संख्या
        for (int i = 9; i >= 2; i--) {
            int C = Frq[i];
            while (C--) {
                ans += (char)(i + 48);
            }
        }
        return ans;
    }
}

int main() {
    string str = "340";
    cout << MaxNum(str);
    return 0;
}

आउटपुट

3322
  1. - C++ में समान सेट बिट्स वाली संख्याओं को जोड़कर अधिकतम योग (Maximum sum by adding numbers with same number of set bits)

    समस्या कथन N संख्याओं की एक सरणी दी गई है, कार्य उन संख्याओं को जोड़कर प्राप्त किए जा सकने वाले अधिकतम योग को ढूंढना है जिनमें समान संख्या में सेट बिट्स (set bits) हैं। उदाहरण यदि इनपुट सरणी {2, 5, 8, 9, 10, 7} है तो आउटपुट 24 होगा: 2 में सेट बिट्स की संख्या 1 है 5 में सेट बिट्स की संख्या 2 है 8 म

  1. - C++ में अधिकतम उत्पाद वाले चौगुनी (Quadruples) की संख्या ज्ञात करें

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

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

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