P1303 A*B Problem - 洛谷 | 计算机科学教育新生态
在这里,我们模拟乘法过程的时候要用无进制相加
相加完之后就是4 13 28 27 18 我们从最低位开始不断往上进位,18%10就是8留下,18/10=1是进位,28%10 是8留下,28/10 是2,进位
处理完进位之后我们消除一下前导0,就完成了
#include <iostream>
using namespace std;
const int N = 1e5 + 10;
int a[N];
int b[N];
int c[N];
int la, lb, lc;
void mul()
{for (int i = 0; i < la; i++){for (int j = 0; j < lb; j++){c[i + j] += a[i] * b[j];}}for (int i = 0; i < lc; i++){c[i + 1] += c[i] / 10;c[i] %= 10;}while (lc > 1 && c[lc - 1] == 0)lc--;
}
int main()
{string x, y; cin >> x >> y;la = x.size(); lb = y.size();lc = la + lb;for (int i = 0; i < la; i++) a[la - 1 - i] = x[i]-'0';for (int i = 0; i < lb; i++) b[lb - 1 - i] = y[i]-'0';mul();for (int i = lc - 1; i >= 0; i--){cout << c[i];}
}