//最恶心人的大数问题...我怕要让你看到我更恶心!!!!!!!!!!!!!!!
#include<stdio.h>
#include<string.h>
int i,j,m,n,b,c,a[11111];
int main()
{
while(scanf("%d",&n)!=EOF)
{
memset(a,0,sizeof(a));
m=0;
a[0]=1;
for(i=1;i<=n;i++) //思想就是用两个for循环 第一个for循环 一个一个向下传送需要相乘的数字
{
for(j=0;j<=m;j++)//第二个for循环就是让一个数组单位之中储存一个小于100000的数字.(试试更大的数字)
{
a[j]=a[j]*i; //在这里开始积攒直到积攒到不少于100000就去开辟一个新的数组小单元
if(j>0&&a[j-1]>=10000)// j>0是用来防止随机数捣鬼.....
{
a[j]=a[j]+a[j-1]/10000; // 在开辟好新空间之后
a[j-1]=a[j-1]%10000; //这一次 a[j]为0. 然后进入这个循环 开始进阶
} //然后出去 进阶完成之后 其值一定小于10000.所以自动跳回
if(a[m]>=10000) //在这里 让m的值变大然后由上一个for循环开辟新空间
m++;
}
}
printf("%d",a[m]);
for(i=m-1;i>=0;i--)
{
printf("%04d",a[i]); //因为是四位数 是一个 小单位.所以 如果是三个数的话,前面的一定是0所以控制一下格式
}
printf("\n");
}
return 0;
}