简单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;
}