小白书--求 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>

#include<string.h>
const int maxn = 3000;
int f[3000];
int main()
{
    int i, j, k, n;
    while(scanf("%d", &n) != EOF)
    {
        memset(f, 0, sizeof(f));
        f[0] = 1;
            printf("0! = 1\n");
        if(n >= 1)
            printf("1! = 1\n");
        for(i=2; i<=n; i++)
        {
            int c = 0;
            for(j = 0; j < maxn; j++)
            {
                 int s = f[j] * i + c;
                 f[j] = s % 10;
                 c = s / 10;
            }

        for(j = maxn -1 ; j >= 0; j--) if(f[j]) break;//忽略前导0.
        for(k = j; k >= 0; k--)
        {
            if(k == j)
                 printf("%d! = ", i);
            printf("%d", f[k]);
        }
        printf("\n");
        }
        printf("\n");
    }
    return 0;
}


posted @ 2014-04-10 20:12  6bing  阅读(135)  评论(0编辑  收藏  举报