统计n!尾部零

#include<stdio.h>
#include<math.h>
void main()
{
    int j,k,m,n,a[40000];
    long g,t;
    double s;
    printf("请输入正整数n(n<10000):");
    scanf("%d",&n);
    s=0;
    for(k=2;k<=n;k++)
        s+=log10(k);                
        m=(int)s+1;                    //求n!的位数
        for(k=1;k<=m;k++)
            a[k]=0;                    //数组清零
        a[1]=1;
        g=0;
        for(k=2;k<=n;k++)
            for(j=1;j<=m;j++)
            {
                t=a[j]*k+g;            //k=2,j=1    t=2,a[1]=2,g=0   j=2  t=a[2]*2+0 a[2]=a[2]*2
                a[j]=t%10;
                g=t/10;
            }
            j=1;
            while(a[j]==0)
                j++;
            printf("%d!尾部连续零共有%d个。\n",n,j-1);
}

 

posted on 2017-11-30 23:35  小星_log  阅读(243)  评论(0编辑  收藏  举报