[阶乘]HDU 1042 — 求N!(0 ≤ N ≤ 10000)


http://acm.hdu.edu.cn/showproblem.php?pid=1042

求N! (0 ≤ N ≤ 10000)

用数组把大数分割存储。。。

#include
int main()
{
    int i,j,n;
    while(scanf("%d",&n)!=EOF)
    {
        int a[7201]={0};
        a[0]=1;
        for(i=2; i<= n;i++)
        {
            for(j=7200;j>=0;j--)
                a[j]=a[j]*i;
            for(j=0;j<=7201;j++)
            {
                a[j+1]+=a[j]/100000;
                a[j]%=100000;
            }
        }
        j=7200;
        while(!a[j])
            j--;
        printf("%d",a[j--]);
        while(j>=0)
            printf("%05d",a[j--]);
        printf("n");
    }
    return 0;
}

发表评论