#include <iostream>
#include <string>
using namespace std;
int main(){
string a , b;
int maxx, d,flag1 = 0,flag2 = 0,flag = 0;
int a1[5005] = { }, b1[5005] = { },ans[10010] = {};
getline(cin,a);
getline(cin,b);
maxx = a.size() > b.size() ? a.size():b.size();
for(int i = a.size() - 1;i >= 0;i --){
a1[a.size() - i] = a[i] - '0';
if(a1[a.size() - i] != 0) flag1 = 1;
}
for(int i = b.size() - 1;i >= 0;i --){
b1[b.size() - i] = b[i] - '0';
if(b1[b.size() - i] != 0) flag2 = 1;
}
if(flag1 == 0||flag2 == 0){
cout << 0;
return 0;
}
for(int i = 1;i <= a.size();i ++){
for(int j = 1;j <= b.size();j ++){
ans[i+j-1] += a1[i]*b1[j];
if(ans[i+j-1] >= 10){
ans[i+j] = ans[i+j] + ans[i+j-1]/10;
ans[i+j-1] = ans[i+j-1] % 10;
}
d = i + j-1;
}
}
if(ans[d+1] != 0) d ++;
for(int i = d;i >= 1;i --){
if(ans[i] != 0) flag = 1;
if(ans[i] == 0&&flag == 0) continue;
cout << ans[i];
}
return 0;
}
自己测试的第一个样例0*10,输出是0,提交第一个点都过不了,求助。