大数乘法的应用(三)

2012-12-06 13:48:43 · 作者: · 浏览: 804

 

    //这是我第二次接触大数的乘法!现在复习一下吧!很好的算法!

    int main()

    {

    int i,j,k,carry;

    int n;

    while(scanf(“%d”,&n)!=EOF)

    {

    memset(h,0,MAX*sizeof(int));//赋值,每一个都置为0

    for(i=1,h[MAX-1]=1;i<=n;++i)//运用递归,并且h =1;

    for(k=MAX-1,carry=0;k>=0;--k)//从最后一位开始相乘,依次向前与每一位相乘

    {

    carry+=i*h[k];

    h[k]=carry%BASE;

    carry/=BASE;//carry表示进位

    }

    for(j=0;j<MAX && h[j]==0;++j);//从0位开始搜索,找到不为0的第一个数

    printf(“%d”,h[j++]);//像是这个输出,就很妙了,第一位可能不足五位,就地输出!

    for(;j<MAX;++j)

    printf(“%05d”,h[j]);//处在中间的值也可能没有五位,这时候要注意了,往左边加0,凑足5位,不然答案会出错!

    printf(“\n”);

    }

    //system(“pause”);

    return 0;

    }