焚魂 @ 2019-08-04 23:38:30
我输入10 10 结果输出110 why???????????
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char a1[2010],b1[2010];
int a[2010],b[2010],c[5000000],lena,lenb,lenc,i,j,x;
int main()
{
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
cin>>a1>>b1;
lena=strlen(a1);
lenb=strlen(b1);
for(i=0;i<=lena-1;i++)
a[lena-i]=a1[i]-48;
for(i=0;i<=lenb-1;i++)
b[lenb-i]=b1[i]-48;
for(i=1;i<=lena;i++)
{
x=0;
for(j=1;j<=lenb;j++)
{
c[i+j-1]=a[i]*b[i]+x+c[i+j-1];
x=c[i+j-1]/10;
c[i+j-1]%=10;
}
c[i+lenb]=x;
}
lenc=lena+lenb;
while(c[lenc]==0&&lenc>1)
lenc--;
for(i=lenc;i>=1;i--)
cout<<c[i];
cout<<endl;
return 0;
}
by duoluoluo @ 2019-08-05 00:22:40
要么就是书上的错了,要么就是你跟书上的不一样
by duoluoluo @ 2019-08-05 00:23:00
当然两者都发生也是有可能的
by Meatherm @ 2019-08-05 00:24:57
@焚魂 目前找到了一个 bug
,
for(i=1;i<=lena;i++)
{
x=0;
for(j=1;j<=lenb;j++)
{
c[i+j-1]=a[i]*b[i]+x+c[i+j-1];//这里的 b[i] 应该为 b[j]
x=c[i+j-1]/10;
c[i+j-1]%=10;
}
c[i+lenb]=x;
}
如果还有 bug
的话您自己再找找吧qwq
by K2sen @ 2019-08-05 06:01:09
那可能是你抄错了
by Timing @ 2019-08-05 06:20:09
@焚魂 高精当然要用python,用什么c艹
by juruojjl_ @ 2019-08-05 07:00:32
@兹磁洛谷 只有这个bug
by infinities @ 2019-08-05 07:48:48
我用重载运算符
by team109 @ 2019-08-05 08:18:45
@装弱是种美德 +1
by infinities @ 2019-08-05 08:30:14
然而我从来没用c++打的高精度提交到洛谷