白上吹雪 @ 2018-03-09 20:44:28
using namespace std; int a[11000],b[11000],c[110000],flag=0,x,i,l1,l2,l3,j,flag2=0; char s1[110000],s2[110000],s3[110000]; int main(){ gets(s1); gets(s2); if(s1[0]=='0'||s2[0]=='0'){ cout<<'0'; return 0; } if(s1[0]=='-'&&s2[0]=='-'){ flag2=1; for(int i=1;i<=strlen(s1+1);i++){ s3[i]=s1[i]; } for(int i=0;i<=strlen(s1+1);i++){ s1[i]=s3[i+1]; } for(int i=1;i<=strlen(s2+1);i++){ s3[i]=s2[i]; } for(int i=0;i<=strlen(s2+1);i++){ s2[i]=s3[i+1]; }
}
if((s1[0]=='-'||s2[0]=='-')&&!flag2){
flag=1;
if(s1[0]=='-'){
for(int i=1;i<=strlen(s1+1);i++){
s3[i]=s1[i];
}
for(int i=0;i<=strlen(s1+1);i++){
s1[i]=s3[i+1];
}
}
if(s2[0]=='-'){
for(int i=1;i<=strlen(s2+1);i++){
s3[i]=s2[i];
}
for(int i=0;i<=strlen(s2+1);i++){
s2[i]=s3[i+1];
}
}
}
l1=strlen(s1);
l2=strlen(s2);
l3=l1+l2+10;
for(i=0;i<l1;i++) a[l1-i]=s1[i]-48;
for(i=0;i<l2;i++) b[l2-i]=s2[i]-48;
for(i=1;i<=l3;i++) for(j=1;j<=i;j++) c[i]+=a[j]*b[i-j+1];
for(i=1;i<=l3;i++){
c[i]+=x;
x=c[i]/10;
c[i]%=10;
}
while(c[l3]==0) l3--;
if(flag) cout<<'-';
for(i=l3;i>=1;i--) cout<<c[i];
}
by 白上吹雪 @ 2018-03-09 20:47:00
by 黄朗初 @ 2018-03-09 20:47:13
豆子
by 白上吹雪 @ 2018-03-09 20:47:35
by namespace_std @ 2018-03-09 22:31:07
@伊芙加登 gets读一行,很可能行尾有个毒瘤的空格被读进去了
by namespace_std @ 2018-03-09 22:40:22
@伊芙加登
当我在输入后面加入几个空格时你的程序就挂掉了......
In:
123456 \n
123456 \n
Out:
1524095-4-5-7-6-5-62176
显然是不太妙啊
by namespace_std @ 2018-03-09 22:43:34