题目
题目链接
题解
这里面我讲的真是不能再详细了
代码
#include<bits/stdc++.h>
using namespace std;
const int N = 2e4+10;
int a[N], b[N], c[N], tmp, lena, lenb;
string s1, s2;
int main()
{
cin>>s1>>s2;
int n1 = s1.size(), n2 = s2.size();
for(int i = 0;i < n1;i ++, tmp *= 10) {
if(i%4==0) ++lena, tmp=1;
a[lena] = a[lena]+(s1[n1-i-1]-'0')*tmp;
}
for(int i = 0;i < n2;i ++, tmp *= 10) {
if(i%4==0) ++lenb, tmp=1;
b[lenb] = b[lenb]+(s2[n2-i-1]-'0')*tmp;
}
for(int i = 1;i <= lena;i ++)
for(int j = 1;j <= lenb;j ++)
c[i+j-1] += a[i]*b[j],
c[i+j] += c[i+j-1]/10000,
c[i+j-1] %= 10000;
int cnt = lena+lenb;
while(!c[cnt] && cnt > 0) cnt--;
if(cnt) {
for(int i = cnt;i >= 1;i --)
if(i!=cnt) printf("%04d", c[i]);
else cout << c[i];
}
else cout << 0;
return 0;
}