以下代码可直接在VS2019运行,程序的输入可在命令行输入
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
char a[100];
cin >> a;
char b[100];
cin >> b;
int aLen = strlen(a);
int bLen = strlen(b);
int sumLen = aLen + bLen;
cout << "aLen=" << aLen << " bLen=" << bLen << "sumLen=" << sumLen << endl;
int minLen = 0, maxLen = 0;
char* maxArr;
char* minArr;
if (aLen > bLen) {
maxArr = a;
minArr = b;
maxLen = aLen;
minLen = bLen;
}
else {
maxArr = b;
minArr = a;
maxLen = bLen;
minLen = aLen;
}
int* sumArr = new int[sumLen];
int* tmpArr = new int[sumLen];
for (int i = 0; i < sumLen; i++) {
sumArr[i] = 0;
tmpArr[i] = 0;
}
int mulJin = 0, addJin = 0;
for (int i = minLen - 1; i >= 0; i--) {
int k = --sumLen;
for (int j = maxLen - 1; j >= 0; j--) {
tmpArr[k] = ((maxArr[j] - '0') * (minArr[i] - '0') + mulJin) % 10;
mulJin = ((maxArr[j] - '0') * (minArr[i] - '0') + mulJin) / 10;
k--;
}
if (mulJin > 0) {
tmpArr[k] = mulJin;
}
mulJin = 0;
for (int i = aLen + bLen - 1; i >= 0; i--) {
int tmp = (sumArr[i] + tmpArr[i] + addJin);
sumArr[i] = tmp % 10;
addJin = tmp / 10;
}
addJin = 0;
for (int i = 0; i < aLen + bLen; i++) {
tmpArr[i] = 0;
}
}
int t = 0;
while (true) {
if (sumArr[t] == 0) {
t++;
}
else {
break;
}
}
for (; t < aLen + bLen; t++) {
cout << sumArr[t];
}
return 0;
}
以上代码源码来自简书用户“baby_double”,自己做了简单的修改。非商业用途。
原网页链接:https://www.jianshu.com/p/8e384e0491df