N!(杭电1042)(数组实现+java实现)

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; }


java语言实现~
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Scanner;
public class Main {


public static void main(String[] args) {

Scanner in=new Scanner(System.in);
while(in.hasNext())
{
int n=in.nextInt();
BigDecimal m=new BigDecimal(1);
   BigDecimal a;
   for(int i=2;i<=n;i++)
   {
    a=new BigDecimal(i);
       m=m.multiply(a);
   }
System.out.println(m);

}
}


}

posted on 2017-07-30 17:34  wgwyanfs  阅读(194)  评论(0)    收藏  举报

导航