九度OJ 1076 N的阶乘 -- 大数运算
题目地址:http://ac.jobdu.com/problem.php?pid=1076
- 题目描述:
-
输入一个正整数N,输出N的阶乘。
- 输入:
-
正整数N(0<=N<=1000)
- 输出:
-
输入可能包括多组数据,对于每一组输入数据,输出N的阶乘
- 样例输入:
-
4 5 15
- 样例输出:
-
24 120 1307674368000
/* * Main.c * * Created on: 2014年1月26日 * Author: Shaobo */ #include <stdio.h> #define N 10010 int main(void){ int result[N]; int i, j, n; while (scanf ("%d", &n) != EOF){ result[0] = result[1] = 1; for (i=2; i<N; ++i) result[i] = 0; for (i=2; i<=n; ++i){ for (j=1; j<=result[0]; ++j) result[j] *= i; for (j=1; j<=result[0]; ++j){ if (result[j] >= 10){ result[j+1] += result[j]/10; result[j] %= 10; if (j == result[0]) ++result[0]; } } } for (i=result[0]; i>=1; --i) printf ("%d", result[i]); putchar ('\n'); } return 0; }