大数阶乘

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>

void PrintFact(int n)
{
int result[1000] = {1}, len = 1;
for (int i = 2, carry = 0; i <= n; ++i)
{
for (int j = 0, t; j < len; carry = t / 10, ++j)
result[j] = (t = result[j] * i + carry) % 10;
for (; carry; carry /= 10)
result[len++] = carry % 10;
}
while (len--)
printf("%d", result[len]);
}
int main()
{
int n;
scanf("%d", &n);
PrintFact(n);
return 0;
}