非负整数的高精度乘法问题:
//高精度乘法(非负整数) (和加法变化并不大)
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int a[5000], b[5000], c[5000];
string x, y;
int main() {
cin >> x >> y;
int la = x.length();
int lb = y.length();
for (int i = 0;i < la;i++) a[la - i] = x[i] - '0';
for (int i = 0;i < lb;i++) b[lb - i] = y[i] - '0';
for (int i = 1;i <= la;i++) {//借用双重循环
for (int j = 1;j <= lb;j++) {
c[i + j - 1] += a[i] * b[j];//注意关系(下标)(小学数学)
c[i + j] += c[i + j - 1] / 10;
c[i + j - 1] %= 10;
}
}
int lc = la + lb;// la 位与 lb 位相乘只能得 la+lb-1 或者 la+lb 位!
while (c[lc] == 0 && lc > 1) lc--;//还是要防着等于 0 的情况~考虑全面一些
for (int i = lc;i > 0;i--) cout << c[i];
return 0;
}