乘以 C++ 中表示为字符串的大数

在本教程中,我们将编写一个将两个字符串相乘的程序。

让我们看看解决问题的步骤。

  • 初始化字符串中的数字。

  • 初始化一个长度为number_one_length + number_two_length的字符串

  • 从末尾开始迭代第一个数字。

    • 将两位数相乘并加上相应的前一行数字。

    • 更新前一行数字。

    • 将进位存储在结果字符串的前一个索引中。

    • 从末尾开始迭代第二个数字。

    • 通过将0字符添加到结果中的每个字符,将字符转换为数字。

    • 通过忽略前导零返回结果。

    示例

    让我们看看代码。

    #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

    结论

    如果您对本教程有任何疑问,请在评论部分提及。