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

C++ में दिए गए N अंकों के सेट से बनी 2, 3 और 5 से विभाज्य सबसे बड़ी संख्या


इस ट्यूटोरियल में, हम एक प्रोग्राम लिखने जा रहे हैं जो सरणी से बनी सबसे बड़ी संख्या ढूंढता है जो 2, 3, और 5 से विभाज्य है।

आइए समस्या को हल करने के चरण देखते हैं।

  • सरणी आरंभ करें।
  • संख्या 0 से समाप्त होनी चाहिए और सभी संख्याओं का योग 3 से विभाज्य होना चाहिए ताकि यह 2, 3, और 5 से विभाज्य हो।
  • सरणी में 0 की जांच करें और यदि यह सरणी में मौजूद नहीं है तो असंभव प्रिंट करें।
  • सरणी को अवरोही क्रम में क्रमबद्ध करें।
  • sum % 3 के लिए शेषफल ज्ञात करें।
  • यदि शेषफल 1 नहीं है, तो अंत से उन सभी अंकों को हटाएं जिनका शेषफल अंक % 3 उपरोक्त शेषफल के बराबर है।
  • यदि उपरोक्त शेषफल के समान शेषफल वाले कोई अंक नहीं हैं, तो उपरोक्त शेषफल से 3 घटाएं और अंतिम दो अंकों को हटाएं जिनका शेषफल उपरोक्त के समान है।
  • सरणी से सभी अंक प्रिंट करें।

उदाहरण

आइए कोड देखते हैं।

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

void findLargestDivibleNumber(int n, vector<int>& v){ 
    int flag = 0; 
    long long sum = 0; 
    for (int i = 0; i < n; i++) { 
        if (v[i] == 0) { 
            flag = 1; 
        } 
        sum += v[i]; 
    } 
    if (!flag) { 
        cout << "Not possible" << endl; 
    }else { 
        sort(v.begin(), v.end(), greater<int>()); 
        if (v[0] == 0) { 
            cout << "0" << endl; 
        }else { 
            int flag = 0; 
            int remainder = sum % 3; 
            if (remainder != 0) { 
                for (int i = n - 1; i >= 0; i--) { 
                    if (v[i] % 3 == remainder) { 
                        v.erase(v.begin() + i); 
                        flag = 1; 
                        break; 
                    } 
                } 
                if (flag == 0) { 
                    remainder = 3 - remainder; 
                    int count = 0; 
                    for (int i = n - 1; i >= 0; i--) { 
                        if (v[i] % 3 == remainder) { 
                            v.erase(v.begin() + i); 
                            count++; 
                            if (count >= 2) { 
                                break; 
                            } 
                        } 
                    } 
                } 
            } 
            if (*v.begin() == 0) { 
                cout << "0" << endl; 
            }else { 
                for (int i : v) { 
                    cout << i; 
                } 
            } 
        } 
    } 
} 

int main() { 
    int n = 9; 
    vector<int> v{ 4, 5, 0, 3, 2, 4, 5, 6, 7 }; 
    findLargestDivibleNumber(n, v); 
    return 0; 
}

आउटपुट

यदि आप उपरोक्त कोड चलाते हैं, तो आपको निम्नलिखित परिणाम मिलेगा।

765544320

निष्कर्ष

यदि ट्यूटोरियल में आपके कोई प्रश्न हैं, तो उन्हें टिप्पणी अनुभाग में उल्लेख करें।


  1. - C++ में दी गई संख्या n के लिए x ढूंढें जहां x + अंकों का योग = n

    समस्या विवरण एक संख्या n दी गई है, हमें एक मान x ढूंढना है जिससे x + x के अंकों का योग = n हो। उदाहरण के लिए, n = 21 के लिए, x = 15 होगा क्योंकि 15 + (1+5) = 21। हल दृष्टिकोण सरल दृष्टिकोण: 1 से n तक पुनरावृति करें, प्रत्येक संख्या के लिए जांचें कि क्या संख्या + उसके अंकों का योग = n है। यदि हां,

  1. - C++ प्रोग्राम: X से विभाज्य सबसे बड़ा K-अंकीय संख्या

    दो पूर्णांक X और K दिए गए हैं। K पूर्णांक संख्या में अंकों की संख्या है। तर्क X से विभाज्य सबसे बड़ी K-अंकीय संख्या ढूंढना है। Input: X = 30, K = 3 Output: 980 व्याख्या 980, 30 से विभाज्य सबसे बड़ी तीन अंकों की संख्या है। K को 10 की घात में लेने के बाद 1 घटाने से हमें सबसे बड़ी K अंकों की संख्या मिल

  1. - C++ प्रोग्राम दी गई संख्या के अंकों का योग करने के लिए

    C++ भाषा में अंकों का योग गणना करने का एक उदाहरण निम्नलिखिक है, उदाहरण #include<iostream> using namespace std; int main() {    int x, s = 0;    cout << "संख्या दर्ज करें: ";    cin >> x;    while (x != 0) {       s =