#include<stdio.h>
#include<string.h>//它包含了清零函数!
#define MAX 1000000//一般大数问题都要用到宏定义
int a[MAX];//<span style="color:#009900;">把大数组定义在main函数之外,否则不能输出结果</span>
int main()
{
int n;//n<span style="color:#009900;">不是大数 ,运算结果是大数
</span> //int a[MAX];//<span style="color:#009900;">存数运算结果
</span> while(scanf("%d",&n)!=EOF&&n>=0)
{
int i,j;
int p,h;//<span style="color:#009900;">p存储当前结果的位数,h为进位
</span> memset(a,0,sizeof(a));
p=1;
h=0;
a[1]=1;//<span style="color:#33cc00;">从1开始存储,比较方便记录当前结果的位数</span>
//if(n==1||n==0)
//printf("%d",1);
for(i=2;i<=n;i++)
{
for(j=1;j<=p;j++)//让a[]<span style="color:#33cc00;">每一位都与i相乘
</span> {
a[j]=a[j]*i+h;
h=a[j]/10;
a[j]%=10;
}
while(h>0)//<span style="color:#33cc00;">考虑是否需要再次进位
</span> {
a[j]=h%10;
h=h/10;
j++;//<span style="color:#33cc00;">j的大小总是比当前结果的位数多1。
</span> }
p=j-1;//<span style="color:#33cc00;">将当前的位数赋给p
</span> }
for(i=p;i>=2;i--)//<span style="color:#33cc00;">倒序输出
</span> printf("%d",a[i]);
printf("%d\n",a[1]);
}
return 0;
}