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

C++ में बड़ी संख्या को समान योग वाले खंडों में विभाजित करें


समस्या विवरण

जांचें कि क्या एक बड़ी संख्या (स्ट्रिंग के रूप में) को दो या अधिक खंडों में बांटा जा सकता है जिनके अंकों का योग समान हो।

उदाहरण: "74325" → (7), (4,3), (2,5) → सभी का योग 7

एल्गोरिदम

  1. प्रीफिक्स योग सरणी बनाएं
  2. प्रत्येक संभावित पहले खंड के लिए (0 से i-1)
  3. शेष स्ट्रिंग को समान योग वाले खंडों में बांटने का प्रयास करें
  4. यदि अंत तक सफलतापूर्वक बंट जाए → true

उदाहरण कोड

#include <iostream>
using namespace std;

bool canBeSegmented(string str) {
    int n = str.length();
    int prefix_sum[n];
    prefix_sum[0] = str[0] - '0';
    for (int i = 1; i < n; i++)
        prefix_sum[i] = prefix_sum[i-1] + (str[i] - '0');
    
    for (int i = 1; i <= n-1; i++) {
        int sum = prefix_sum[i-1];
        int prev_sum = 0, it = i;
        bool flag = false;
        
        while (it < n) {
            prev_sum += str[it] - '0';
            if (prev_sum == sum) {
                prev_sum = 0;
                flag = true;
            } else if (prev_sum > sum) break;
            it++;
        }
        if (prev_sum == 0 && it == n && flag) return true;
    }
    return false;
}

int main() {
    string s = "74325";
    if (canBeSegmented(s))
        cout << "Yes, can be segmented into more than two segments";
    else
        cout << "No, cannot be segmented";
    return 0;
}

आउटपुट

Yes, This can be segmented into more than two segments
  1. C++ में जांचें कि क्या संख्या को दो त्रिकोणीय संख्याओं के योग के रूप में दर्शाया जा सकता है C++ में जांचें कि क्या संख्या को दो त्रिकोणीय संख्याओं के योग के रूप में दर्शाया जा सकता है

    इस खंड में, हम देखेंगे कि क्या हम एक संख्या को दो त्रिकोणीय संख्याओं के योग के रूप में व्यक्त कर सकते हैं या नहीं। त्रिकोणीय संख्याएं नीचे की तरह होती हैं - उदाहरण से, हम देख सकते हैं कि 1, 3, 6, 10 कुछ त्रिकोणीय संख्याएं हैं। हमें संख्या N (मान लीजिए 16) को दो त्रिकोणीय संख्याओं (6, 10) के योग के

  1. - C++ प्रोग्राम जांचने के लिए कि क्या कोई संख्या दो अभाज्य संख्याओं के योग के रूप में व्यक्त की जा सकती है

    यह जांचने का एक उदाहरण है कि क्या कोई संख्या दो अभाज्य संख्याओं के योग के रूप में व्यक्त की जा सकती है। उदाहरण #include <iostream> using namespace std; int func(int num) {    int i;    int flag = 1;    for(i = 2; i <= num/2; ++i) {       if(num %

  1. - पायथन में जांचें कि 1s और 2s का ऐरे दो बराबर योग वाले भागों में विभाजित हो सकता है या नहीं

    मान लीजिए हमारे पास एक ऐरे nums है जिसमें केवल 1 और 2 मान होते हैं। हमें यह जांचना है कि क्या ऐरे को दो अलग-अलग भागों में विभाजित किया जा सकता है ताकि प्रत्येक भाग के तत्वों का योग समान हो। उदाहरण के लिए, यदि इनपुट nums = [1, 1, 2, 2, 2] है, तो आउटपुट True होगा क्योंकि हम इस ऐरे को [1, 1, 2] और [2,