Description
Given an integer N(0 ≤ N ≤ 10000), your task is to calculate N!
Input
One N in one line, process to the end of file.
Output
For each N, output N! in one line.
Sample Input
1 2 3
Sample Output
1 2 6
分析:大数据,注意n=0输出1
#include <cstdio>
using namespace std;
const int MODE = 100000;
const int maxn = 10000;
int fac[maxn];
int main()
{
int n;
while(~scanf("%d", &n)) {
if(n==0) { printf("1\n"); continue; }
int index = maxn - 1;
fac[index] = n;
for(int i=2; i<n; i++) {
int c = 0;
for(int j=maxn-1; j>=index; j--) {
c += fac[j]*i;
fac[j] = c%MODE;
c /= MODE;
}
while(c>0) { fac[--index] = c%MODE; c/=MODE; }
}
printf("%d", fac[index]);
for(int i=index+1; i<maxn; i++) {
printf("%05d", fac[i]);
}
putchar('\n');
}
return 0;
}