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

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

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

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

इनपुट

15
2

आउटपुट

30

एल्गोरिदम

  • संख्याओं को स्ट्रिंग में प्रारंभ करें।

  • लंबाई की एक स्ट्रिंग प्रारंभ करें number_one_length + number_two_length.

  • अंत से पहले नंबर पर पुनरावृति करें।

    • अंत से दूसरे नंबर पर पुनरावृति करें।

      • दो अंकों को गुणा करें और संबंधित पिछली पंक्ति अंक जोड़ें।

      • पिछली पंक्ति का अंक अपडेट करें।

      • कैरी को परिणाम स्ट्रिंग के पिछले इंडेक्स में स्टोर करें।

  • 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. दो संख्याओं को गुणा करने का सबसे तेज़ तरीका

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

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

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

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

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