简单n! (本来只是一个·简单的地推,只是大数问题有点纠结·,本人用数组简单模拟了一下)

 

简单n!

Time Limit: 1000MS Memory limit: 65536K

题目描述

给定一个数n(0 <= n <= 150), 求0到n中所有数的阶乘。

输入

题目有多组数据,处理到文件结尾。输入一个数n。

输出

输出阶乘,形式如:4! = 24.每组数据输出后跟一个空行。

示例输入

1
4

示例输出

0! = 1
1! = 1

0! = 1
1! = 1
2! = 2
3! = 6
4! = 24

 

#include<stdio.h>
int main()
{
    int i,j,n,h,s[1001];
    while(~scanf("%d",&n))
    {
        printf("0! = 1\n");
        for(i=0; i<1001; i++)
            s[i]=0;
        s[1]=1;
        h=1;
        for(i=1; i<=n; i++)
        {
            for(j=1; j<=h; j++)
                s[j]*=i;
            for(j=1; j<=h; j++)
                if(s[j]>9)
                {
                    s[j+1]+=s[j]/10;
                    s[j]=s[j]%10;
                }
            while(s[j]>9)
            {
                s[j+1]+=s[j]/10;
                s[j]=s[j]%10;
                j++;
            }
            for(;s[j]==0;j--);
            h=j;
            printf("%d! = ",i);
            for(; j>0; j--)
                printf("%d",s[j]);
            printf("\n");
        }
        printf("\n");
    }
    return 0;
}

 

posted @ 2013-04-11 14:36  孔凡凯凯  阅读(264)  评论(3编辑  收藏  举报