首页 > 代码库 > N!(杭电1042)

N!(杭电1042)

N!

Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 55971    Accepted Submission(s): 15886


Problem Description
Given an integer N(0 ≤ N ≤ 10000), your task is to calculate N!
 

Input
One N in one line, process to the end of file.
 

Output
For each N, output N! in one line.
 

Sample Input
1 2 3
 

Sample Output
1 2 6
#include<stdio.h>
int main()
{
	int i,j,n,m;
	while(scanf("%d",&n)!=EOF)
	{
		if(n<0)
		{ 
		   continue;
	    }
		int str[10000]={0};
		str[0]=1;
		m=0;
		for(i=1;i<=n;i++)//m用来控制进位。 
			for(j=0;j<=m;j++)
			{
				str[j]=str[j]*i;
				if(j>0&&str[j-1]>=10000)
				{
				   str[j]=str[j]+str[j-1]/10000;
				   str[j-1]=str[j-1]%10000;
			    }
			    if(str[m]>=10000)
			       m++;
			}
		printf("%d",str[m]);   
		for(i=m-1;i>=0;i--)
		    printf("%04d",str[i]);
		printf("\n");
	}
	return 0;
}


N!(杭电1042)