#include<bits/stdc++.h>
using namespace std;
const int p=1000;
const int N=1000;
string s[2];
int num[4]={1,10,100,1000};
int a[2][N],l[2];
int sum[N*2];
int iter,itera,tmp;
int main(){
ios::sync_with_stdio(false);
// cout<<s[0].size()<<' '<<s[1].size()<<endl;
for(int k=0;k<=1;k++){
cin>>s[k];
int shouwei0=0;
while(*(s[k].begin()+shouwei0)==48) //string的器到底指向哪兒啊?????
shouwei0++;
reverse(s[k].begin(),s[k].end());
// cout<<s[k]<<' '<<s[k].size()-shouwei0<<endl; //success;
itera=0;
for(int i=0;i<s[k].size()-shouwei0;i++){
if(iter==3){
a[k][itera++]=tmp;
tmp=0;
iter=0;
}
tmp+=(s[k][i]-48)*num[iter++];
}
if(tmp){
a[k][itera++]=tmp;
tmp=0;
iter=0;
}
l[k]=itera;
/* for(int i=l[k]-1;i>=0;i--){
if(i==l[k]-1) printf("%d",a[k][i]);
else printf("%04d",a[k][i]);
}
cout<<endl;
*/ }
//開始乘了;
// cout<<l[0]<<' '<<l[1]<<endl; //success;
for(int i=0;i<l[0];i++)
for(int j=0;j<l[1];j++){
sum[i+j]+=a[0][i]*a[1][j];
// cout<<sum[j]<<endl; //success;
// system("pause");
}
int flag=0;
for(int i=N*2-1;i>=0;i--)
if(sum[i]){
flag=i;
break; //注意break;
}
for(int i=0;i<=flag;i++){
sum[i+1]+=sum[i]/p;
sum[i]%=p;
}
for(int i=N*2-1;i>=0;i--)
if(sum[i]){
flag=i;
break; //注意break;
}
int beacon=0;
for(;flag>=0;flag--){
if(!beacon){
printf("%d",sum[flag]);
beacon=1;
}
else printf("%03d",sum[flag]);
}
return 0;
}
萬進制並不穩定
數據大了之後乘法表中間的還是超了int範圍
所以改用千進制過了洛谷這題;
fbi warning wwwwwwwwwwww