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

C++ में संख्या के संभावित कट्स ताकि अधिकतम भाग 3 से विभाज्य हों


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

समस्या को समझने के लिए एक उदाहरण लेते हैं

इनपुट - 9216

आउटपुट - 3

व्याख्या - संख्या को 9|21|6 के रूप में विभाजित किया गया है।

इस समस्या को हल करने के लिए, हमें संख्या के कम से कम महत्वपूर्ण बिट से शुरू करना होगा यानी संख्या का अंतिम अंक। यहां, हम 3 से विभाज्य सबसे छोटी संख्या ढूंढेंगे। और फिर इसके आधार पर काउंट अपडेट करेंगे।

उदाहरण - यदि arr[i] 3 से विभाज्य संख्या बनाता है, तो हम काउंट बढ़ाएंगे और संख्या के अगले अंक पर जाएंगे। यदि arr[i] 3 से विभाज्य नहीं है, तो हम इसे अगले अंक के साथ जोड़ेंगे और 3 की विभाज्यता की जांच करेंगे।

3 की विभाज्यता - एक संख्या 3 से विभाज्य होती है यदि संख्या के अंकों का योग 3 से विभाज्य होता है।

उदाहरण

हमारे समाधान के कार्यान्वयन को दर्शाने वाला प्रोग्राम

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

int countMaximum3DivisibleNumbers(string number) {
    int n = number.length();
    vector<int> remIndex(3, -1);
    remIndex[0] = 0;
    vector<int> counter(n + 1);
    int r = 0;
    for (int i = 1; i <= n; i++) {
        r = (r + number[i-1] - '0') % 3;
        counter[i] = counter[i-1];
        if (remIndex[r] != -1)
            counter[i] = max(counter[i], counter[remIndex[r]] + 1);
        remIndex[r] = i+1;
    }
    return counter[n];
}

int main() {
    string number = "216873491";
    cout << "संख्या " << number << " को काटकर बने 3 विभाज्य संख्याओं की संख्या है: " << countMaximum3DivisibleNumbers(number);
    return 0;
}

आउटपुट

संख्या 216873491 को काटकर बने 3 विभाज्य संख्याओं की संख्या है: 5
  1. सर्कुलर ऐरे में अधिकतम योग जहाँ कोई दो आसन्न तत्व न हों - C++ सर्कुलर ऐरे में अधिकतम योग जहाँ कोई दो आसन्न तत्व न हों - C++

    इस समस्या में, हमें एक सर्कुलर ऐरे cirArr[] दिया गया है। हमारा कार्य एक प्रोग्राम बनाना है जो C++ में सर्कुलर ऐरे में अधिकतम योग ढूंढे जहाँ कोई दो आसन्न तत्व न हों।समस्या विवरणसर्कुलर ऐरे के लिए, हमें ऐरे के तत्वों का अधिकतम योग ढूंढना है जहाँ आसन्न तत्वों को नहीं लिया जा सकता, यानी हमें वैकल्पिक तत

  1. - C++ का उपयोग करके सरणी में ऐसा तत्व खोजें जिससे सभी तत्व विभाज्य हों

    मान लीजिए हमारे पास कुछ तत्वों के साथ एक सरणी A है। हमें A से एक ऐसा तत्व ढूंढना है जिससे सभी तत्व इससे विभाज्य हों। मान लीजिए A = [15, 21, 69, 33, 3, 72, 81] है, तो तत्व 3 होगा, क्योंकि सभी संख्याएं 3 से विभाज्य हैं। इस समस्या को हल करने के लिए, हम A में सबसे छोटी संख्या लेंगे, फिर जांचेंगे कि क्य

  1. - C++ में A में N अंक जोड़ें ताकि प्रत्येक जोड़ के बाद यह B से विभाज्य हो

    यहां हम देखेंगे कि N अंकों को A के साथ जोड़कर एक संख्या कैसे उत्पन्न की जाए, और प्रत्येक चरण में नए अंक जोड़ते समय यह दूसरी संख्या B से विभाज्य हो। मान लीजिए हम 4 अतिरिक्त अंक जोड़कर एक 5-अंकीय संख्या बनाने जा रहे हैं। हम 7 से विभाज्यता की जांच करेंगे। संख्या 8 से शुरू होगी। तो पहले यह 4 को जोड़ेगा