$$\color{red}{算法}\color{blue}{基础课}\color{purple}{笔记and题解}\color{green}{汇总}$$
笔记:
我们注意两个数相乘,手模一遍之后发现把位数相加即可得到最后这一位的答案应该加到答案的那个位置。
注意进位(还是一样)。
#include<bits/stdc++.h>
using namespace std;
string a0, b0;
const int N = 100010;
int a[N], b[N], ans[N];
int main(){
cin >> a0 >> b0;
int l1 = a0.size(), l2 = b0.size();
for (int i = 0; i < l1; i++) a[l1 - i - 1] = a0[i] - 48;
for (int i = 0; i < l2; i++) b[l2 - i - 1] = b0[i] - 48;
int l3 = l1 + l2 - 1;
for(int i = 0;i < l1; i++)
for(int j = 0;j < l2; j++)
ans[i + j] += a[i] * b[j];
for (int i = 0; i <= l3; i++) if (ans[i] > 9) ans[i + 1] += ans[i] / 10, ans[i] %= 10;
while (ans[l3]) l3++;
while (ans[l3] == 0 && l3 > 0) l3--;
for (int i = l3; i >= 0; i--) cout << ans[i];
return 0;
}
去0操作”一来一回“
很妙啊