蜜汁爆炸

明明在自己做的各种数据都可以过。。。为什么会只过第二点,我也找不出错误,求神犇帮忙
```c++
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;

int l1,l2,l,n,i,j,k,x,x1,ll,ll1,ll2;
int a[15000],b[15000],ans[50000];
char s1[15000],s2[15000];

int main()
{
{
scanf("%s%s",s1,s2);
//============================以下为初始化
ll1=strlen(s1);ll2=strlen(s2);
l1=0;l2=0;
for (i=ll1-1;i>=0;i--)//s1压4位转存为数组
{
x1=int(s1[i])-48;
ll++;
for (j=1;j<=ll-1;j++)
x1*=10;
x+=x1;
if ((x>=1000)||(i==0))//满4位存入一次
{
l1++;
a[l1]=x;
ll=0;
x=0;
}
}
for (i=ll2-1;i>=0;i--)//转存s2,同上
{
x1=int(s2[i])-48;
ll++;
for (j=1;j<=ll-1;j++)
x1*=10;
x+=x1;
if ((x>=1000)||(i==0))//同上
{
l2++;
b[l2]=x;
ll=0;
x=0;
}
}
//=================
for (i=1;i<=l1;i++)//计算过程(包括进位)
for (j=1;j<=l2;j++)
{
ans[i+j-1]=ans[i+j-1]+(a[i]*b[j]);
ans[i+j]=ans[i+j]+(ans[i+j-1]/10000);
ans[i+j-1]=ans[i+j-1]%10000;
}
l=l1+l2;
while (ans[l]==0)
l--;//处理位数
//==================输出
printf("%d",ans[l]);
for (i=l-1;i>=1;i--)
printf("%.4d",ans[i]);
}
}
```

1 条评论

  • 1

信息

ID
1040
难度
7
分类
高精度 点击显示
标签
(无)
递交数
16568
已通过
3173
通过率
19%
被复制
26
上传者