- 高精度乘法
- 2016-07-16 11:40:16 @
#include<iostream>
#include<cstdio>
#include<cstring>
int main(int a[10000],int b[10000],int c[10000])
{
int i,j,len;
scanf("%d%d",&a,&b);
//模拟手工运算,将a中的每位与b中的每位相乘
for(i=1;i<=a[0];i++){
for(j=1;j<=b[0];j++){
c[i+j-1]+=a[i]*b[j];//当前位的值
c[i+j]+=c[i+j-1]/10000;//进位值
c[i+j-1]%=10000;//调整当前位
}
}
len=a[0]+b[0]+1;//相乘后总位数是原位数之和
while(c[len]==0&&len>1)len--;//去掉最高位的0
c[0]=len;//存放实际位数
for(i=c[0]-1;i>=1;i--)
printf("%04d",c[i]);
}
3 条评论
-
evian LV 8 @ 2016-10-06 19:34:26
一万位乘一万位,位数最高是多少?
你的答案开了多少位…… -
2016-07-17 16:48:49@
hehe
-
2016-07-17 09:57:00@
全都错了
- 1