乘以 C++ 中表示为字符串的大数
在本教程中,我们将编写一个将两个字符串相乘的程序。
让我们看看解决问题的步骤。
初始化字符串中的数字。
初始化一个长度为number_one_length+number_two_length的字符串。
从末尾开始迭代第一个数字。
将两位数相乘并加上相应的前一行数字。
更新前一行数字。
将进位存储在结果字符串的前一个索引中。
从末尾开始迭代第二个数字。
通过将0字符添加到结果中的每个字符,将字符转换为数字。
通过忽略前导零返回结果。
示例
让我们看看代码。
#include输出结果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
结论
如果您对本教程有任何疑问,请在评论部分提及。