基本思路采用累乘的方法,乘法笔算的思路,数组记录下所有乘积的位,我写了个具体如下:
#include
int xcfun(int x[],int d[],int ws[],int j,int jw,int len)//模拟笔算乘法,逐位相乘
{
int k=0;
do
{
x[k+j]=(ws[j]*d[k]+jw)%10;
jw=(ws[j]*d[k]+jw)/10;
k++;
}while(d[k]>-1);
if(jw!=0)
{
x[k+j]=jw;
k++;
};
if(k+j>len)len=k+j;
return len;
}
main()
{
int a[2000],b[2000],c[2000],e[2000],d[2000],ws[4];
int i,j,k,jw,len;
for(k=0;k<2000;k++){d[k]=-1;}
d[0]=1;
for(i=1;i<=100;i++)//求100的阶乘
{
ws[0]=i%1000%100%10;
ws[1]=i%1000%100/10;
ws[2]=i%1000/100;
ws[3]=i/1000;