//N!
#include <stdio.h>
#include <string.h>
int arr[8001],k;
int main()
{
int i,j,n,jinwei;
int num;
while(scanf("%d",&n)!=EOF)
{
memset(arr,0,sizeof(arr));
arr[0]=1;
k=0;
// 从1到n循环
for(j=1;j<=n;++j)
{
jinwei=0;
for(i=0;i<=k;++i)
{
num=arr[i]*j+jinwei;
if(num>99999) jinwei=num/100000;
else jinwei=0;
arr[i]=num%100000;
// 如果到了最高位,仍有进位
if(i==k && jinwei!=0)
{
++k;
arr[k]=jinwei;
break;
}
}
}
// 注意格式,第一个输出的不需要补0,后面需要补0
for(i=k;i>=0;--i)
if(i==k) printf("%d",arr[i]);
else printf("%05d",arr[i]);
printf("\n");
}
return 0;
}
ACM-大数之N!——hdu1042,布布扣,bubuko.com
原文:http://blog.csdn.net/lttree/article/details/20357131