/*
输入不超过1000的正整数n,输出n!=1*2*3*……*n的精确结果。 样例输入:30 样例输出:265252859812191058636308480000000 例如 n=3;s=6; n=4;s=24; n=5;s=120; 1000的阶乘需要一个3000位的数组来存*/#include<iostream>#include<stdio.h>#include<string.h>using namespace std;const int maxn=3003;//数组长度
int f[maxn];int main(){ int i,j,n,c,k;while(cin>>n)
{ memset(f,0,sizeof(f));//清空数组 f[0]=1;for(i=2;i<=n;i++)
{ c=0; for(j=0;j<maxn;j++) { k=f[j]*i+c; f[j]=k%10; c=k/10; } } for(j=maxn-1;j>=0;j--) if(f[j]!=0)//利用0 1 来判断; break; for(i=j;i>=0;i--) printf("%d",f[i]); printf("\n"); } return 0;}