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

C++ में तीन का सबसे बड़ा गुणक

मान लीजिए हमारे पास अंकों की एक सरणी है, हमें उन अंकों को किसी भी क्रम में जोड़कर बनने वाला तीन का सबसे बड़ा गुणक ज्ञात करना है। उत्तर बहुत बड़ा हो सकता है इसलिए इसे स्ट्रिंग के रूप में लौटाएं। यदि कोई उत्तर नहीं है तो खाली स्ट्रिंग लौटाएं।

यदि इनपुट [7,2,8] है, तो आउटपुट 87 होगा।

हल करने के चरण

  • तीन पंक्तियों वाला एक 2D सरणी d परिभाषित करें

  • अंकों की सरणी को क्रमबद्ध करें

  • sum := 0

  • प्रत्येक अंक के लिए: x := अंक, d[x mod 3] में डालें, sum := (sum + x) mod 3

  • यदि शून्येतर है, तो: यदि d[sum] खाली है तो rem := 3 - sum, यदि d[rem] का आकार < 2 तो खाली स्ट्रिंग लौटाएं, अन्यथा d[rem] से दो तत्व हटाएं; अन्यथा d[sum] से एक तत्व हटाएं

  • ret := खाली स्ट्रिंग

  • सभी शेष वर्गों के अंकों को जोड़ें

  • ret को अवरोही क्रम में क्रमबद्ध करें

  • यदि ret का पहला अंक '0' है तो "0" लौटाएं, अन्यथा ret लौटाएं

उदाहरण

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

class Solution { 
public: 
    string largestMultipleOfThree(vector<int>& digits) { 
        vector<vector<int>> d(3); 
        sort(digits.begin(), digits.end(), greater<int>()); 
        int sum = 0; 
        for (int i = 0; i < digits.size(); i++) { 
            int x = digits[i]; 
            d[x % 3].push_back(digits[i]); 
            sum += x; 
            sum %= 3; 
        } 
        if (sum) { 
            if (!d[sum].size()) { 
                int rem = 3 - sum; 
                if (d[rem].size() < 2) return ""; 
                d[rem].pop_back(); 
                d[rem].pop_back(); 
            } else { 
                d[sum].pop_back(); 
            } 
        } 
        string ret = ""; 
        for (int i = 0; i < 3; i++) { 
            for (int j = 0; j < d[i].size(); j++) { 
                ret += to_string(d[i][j]); 
            } 
        } 
        sort(ret.begin(), ret.end(), greater<int>()); 
        if (ret.size() && ret[0] == '0') return "0"; 
        return ret; 
    } 
}; 

int main() { 
    Solution ob; 
    vector<int> v = {7,2,8}; 
    cout << (ob.largestMultipleOfThree(v)); 
    return 0; 
}

इनपुट

{7,2,8}

आउटपुट

87
  1. C++ में ट्री में सबसे बड़ा उपट्री योग ढूंढें C++ में ट्री में सबसे बड़ा उपट्री योग ढूंढें

    इस समस्या में, हमें एक बाइनरी ट्री दिया गया है। हमारा कार्य ट्री में सबसे बड़ा उपट्री योग ढूंढना है। समस्या विवरण: बाइनरी ट्री में धनात्मक और ऋणात्मक दोनों मान होते हैं। और हमें वह उपट्री ढूंढनी है जिसमें नोड्स का अधिकतम योग हो। समस्या को समझने के लिए एक उदाहरण लेते हैं, आउटपुट: 13 व्याख्या: बाएं

  1. - C++ में एलिक्वॉट योग (Aliquot Sum)

    यहां हम देखेंगे कि एलिक्वॉट योग क्या है? n का एलिक्वॉट योग n को छोड़कर n के सभी पूर्ण गुणनखंडों का योग है। उदाहरण के लिए, यदि संख्या 20 है, तो पूर्ण गुणनखंड (1, 2, 4, 5, 10) हैं। तो एलिक्वॉट योग 22 है। एक दिलचस्प तथ्य यह है कि, यदि किसी संख्या का एलिक्वॉट योग संख्या स्वयं है, तो वह संख्या एक पूर्ण

  1. - C++ प्रोग्राम: तीन संख्याओं में सबसे बड़ी संख्या खोजें

    परिचयतीन संख्याओं में सबसे बड़ी संख्या if स्टेटमेंट का कई बार उपयोग करके पाई जा सकती है। यह एक प्रोग्राम में इस प्रकार दिया गया है - उदाहरण#include <iostream> using namespace std; int main() { int a = 5, b = 1, c = 9; if (a > b) { if (a > c) cout << a &