#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
int a[50000];
int main()
{
int n;
while(~scanf("%d",&n))
{
memset(a,0,sizeof(a));
a[0]=1;
for(int i=1;i<=n;i++)
{
int c=0; //需要进位的大小
for(int j=0;j<50000;j++)
{
int s=a[j]*i+c;
a[j]=s%10;
c=s/10;
}
}
for(int i=50000;i>=0;i--) //输出处理
{
if(a[i]!=0)
{
for(int j=i;j>=0;j--)
printf("%d",a[j]);
printf("\n");
break;
}
}
}
return 0;
}
思路:12!=11!*12. 11的阶乘的值已经存在a[]中,只需要12与每一位a[i]相乘