hdu1042(n!)

http://acm.hdu.edu.cn/showproblem.php?pid=1042

#include<stdio.h>
#include<math.h>
int main()
{
	long m,i,j,a[10000],w,n,c;
	while(scanf("%ld",&n)>0)
	{
		a[0]=1;
		m=0;
		for(i=1;i<=n;i++)
		{
			c=0;
			for(j=0;j<=m;j++)
			{
				a[j]=a[j]*i+c;    //关键语句
				c=a[j]/10000;
				a[j]%=10000;
			}
			if(c>0)
			{
				m++;
				a[m]=c;
			}
		}
		w=m*4+log10((double)a[m])+1;   //计算有多少个数
		printf("%ld",a[m]);
		for(i=m-1;i>=0;i--)
			printf("%4.4ld",a[i]);
		printf("\n");
	}
	return 0;
}

 

posted @ 2012-11-23 13:35  紫忆  阅读(198)  评论(0编辑  收藏  举报