64,654
社区成员
发帖
与我相关
我的任务
分享
/*
高精度算法,用数组表示数,例如a=823458是6位数
就用a[0]=6; //6位数.
a[1]=8;a[2]=2;a[3]=3; a[4]=4;a[5]=5;a[6]=8;
表示a=823458;
上面是十进制情况,本程序采用万进制,即每个数组元素能存的最大元素为9999
*/
//高精度乘法
void mult(int *a,int *b,int *c)
{//c=a*b;
int i,j,m,n,k,base=10000;//万进制
m=a[0];n=b[0];
k=n+m-1;
for(i=0;i<=k;i++)c[i]=0;
for(i=1;i<=m;i++) {
if(a[i])for(j=1;j<=n;j++)if(b[j])c[i+j-1]+=a[i]*b[j];
}
for(i=k;i>=1;i--)if(c[i]>=base){ c[i-1]+=c[i]/base;c[i]%=base;}
if(c[0]>0)
{k++; for(i=k;i>=1;i--)c[i]=c[i-1]; }c[0]=k;
}