/*
习题 92:高精度算阶乘★★
题目描述:
算出n!的完整结果,其中n!=1*2*3*...*n
输入:
多组测试数据,一行一组,每行仅一个数n
其中0<=n<=10000
输出:
输出相应的n!的结果,必须精确到个位
样例输入:
10
20
100
样例输出:
3628800
2432902008176640000
933262154439441526816992388562667004907159682643816214685929
638952175999932299156089414639761565182862536979208272237582
51185210916864000000000000000000000000
其它信息:
最后一个100!的结果由于过长,故拆分成三行,每行60字符,请见谅
难度:Easy
*/
#include<stdio.h>
#define SIZE 8000
#define DS 7998
unsigned x[SIZE],n,p,i,j,t;
int main(void)
{
while(scanf("%d",&n)!=EOF)
{
p=DS; x[DS]=1; x[DS+1]=0;
for(i=1;i<=n;i++)
{
p--; x[p]=0; p--; x[p]=0;
for(j=DS;j>p;j--)
{
x[j]*=i; t=j+1;
x[j]+=x[t]/100000;
x[t]%=100000;
}
while(!x[p]) p++;
}
printf("%u",x[p]); p++;
for(;p<SIZE-1;p++)
printf("%05u",x[p]);
printf("\n");
}
return 0;
}