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

C++ में स्ट्रिंग के रूप में दर्शाई गई बड़ी संख्याओं को गुणा करना


दो संख्याएं स्ट्रिंग फॉर्मेट में दी गई हैं। हमें उन्हें गुणा करना है। समस्या को हल करने का विचार पिछले अंक के गुणनफल के उत्तर और कैरी को बनाए रखना है। हम अगले सेट के अंकों के गुणनफल को प्राप्त करने के लिए पिछले अंकों के गुणनफल के उत्तर और कैरी का उपयोग कर सकते हैं।

आइए एक उदाहरण देखते हैं।

इनपुट

15 2

आउटपुट

30

एल्गोरिदम

  • संख्याओं को स्ट्रिंग में आरंभ करें।
  • संख्या_एक_लंबाई + संख्या_दो_लंबाई लंबाई की एक स्ट्रिंग आरंभ करें।
  • पहली संख्या पर अंत से पुनरावृति करें।
    • दूसरी संख्या पर अंत से पुनरावृति करें।
      • दो अंकों को गुणा करें और संबंधित पिछली पंक्ति के अंक को जोड़ें।
      • पिछली पंक्ति के अंक को अपडेट करें।
      • कैरी को परिणाम स्ट्रिंग के पिछले इंडेक्स में स्टोर करें।
  • परिणाम में प्रत्येक वर्ण में 0 वर्ण जोड़कर कैरेक्टर को अंकों में बदलें।
  • अग्रणी शून्य को अनदेखा करके परिणाम वापस करें।
  • कार्यान्वयन

    निम्नलिखित C++ में उपरोक्त एल्गोरिदम का कार्यान्वयन है:

    #include <bits/stdc++.h> 
    using namespace std; 
    
    string multiplyTwoNumbers(string num1, string num2) { 
        if (num1 == "0" || num2 == "0") { 
            return "0"; 
        } 
        string product(num1.size() + num2.size(), 0); 
        for (int i = num1.size() - 1; i >= 0; i--) { 
            for (int j = num2.size() - 1; j >= 0; j--) { 
                int n = (num1[i] - '0') * (num2[j] - '0') + product[i + j + 1]; 
                product[i + j + 1] = n % 10; 
                product[i + j] += n / 10; 
            } 
        } 
        for (int i = 0; i < product.size(); i++) { 
            product[i] += '0'; 
        } 
        if (product[0] == '0') { 
            return product.substr(1); 
        } 
        return product; 
    } 
    
    int main() { 
        string num1 = "34"; 
        string num2 = "57"; 
        if((num1.at(0) == '-' || num2.at(0) == '-') && (num1.at(0) != '-' || num2.at(0) != '-')) { 
            cout << "-"; 
        } 
        if(num1.at(0) == '-') { 
            num1 = num1.substr(1); 
        } 
        if(num2.at(0) == '-') { 
            num2 = num2.substr(1); 
        } 
        cout << multiplyTwoNumbers(num1, num2) << endl; 
        return 0; 
    }

    आउटपुट

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

    1938

    1. दो संख्याओं को गुणा करने का सबसे तेज़ तरीका दो संख्याओं को गुणा करने का सबसे तेज़ तरीका

      परिचय दो संख्याएं बाइनरी स्ट्रिंग के रूप में दी गई हैं, हमारा कार्य उन संख्याओं के गुणन का परिणाम तेज़ और कुशल तरीके से ढूंढना है। विभाजन और विजय (Divide and Conquer) रणनीति का उपयोग करके, हम इस समस्या को बहुत कुशल तरीके से हल कर सकते हैं। हम संख्याओं को दो हिस्सों में विभाजित करेंगे। मान लें Xleft

    1. C++ में जांचें कि क्या संख्या को दो त्रिकोणीय संख्याओं के योग के रूप में दर्शाया जा सकता है C++ में जांचें कि क्या संख्या को दो त्रिकोणीय संख्याओं के योग के रूप में दर्शाया जा सकता है

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

    1. - C++ में स्ट्रिंग्स गुणा करना

      मान लीजिए हमारे पास दो संख्याएं स्ट्रिंग के रूप में हैं। हमें उन्हें गुणा करना है और परिणाम को भी स्ट्रिंग में लौटाना है। इसलिए यदि संख्याएं 26 और 12 हैं, तो परिणाम 312 होगा।इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -दो आर्गुमेंट्स x और y लेना जो दर्शाता है x, y को विभाजित करता हैयदि x < -Infin