大数阶乘
描述
我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它?
- 输入
- 输入一个整数m(0<m<=5000)
- 输出
- 输出m的阶乘,并在输出结束之后输入一个换行符
- 样例输入
50
样例输出
30414093201713378043612608166064768844377641568960512000000000000
测试代码
1 #include <stdio.h> 2 #include <string.h> 3 #define N 40000 4 5 int s[N]; 6 int main() 7 { 8 int i, j, k, t, n; 9 while (scanf("%d", &n) != EOF) 10 { 11 memset(s, 0, sizeof(s)); 12 s[0] = 1; 13 for (i = 2; i <= n; i++) 14 { 15 for (t = 0, j = 0; j < N; j++) 16 { 17 k = s[j] * i + t; 18 s[j] = k % 10; 19 t = k / 10; //进位 20 } 21 } 22 for (i = N - 1; !s[i]; i--); //去除前导0 23 while (i > -1) 24 { 25 printf("%d", s[i--]); 26 } 27 putchar('\n'); 28 } 29 return 0; 30 }