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
c代码实现:
#include<stdio.h>
#include<string.h>
int main ()
{
int t,max,n,c,i,j,a[90001];
while (scanf("%d",&n)==1)
{
memset(a,0,sizeof(a));
a[0]=1;max=1;
for(i=1;i<=n;i++)
{
c=0;
for(j=0;j<max;j++)
{
a[j]=a[j]*i+c;
c=a[j]/10000;
a[j]=a[j]%10000;
if(c&&max<=j+1)
max++;
}
}
printf("%d",a[max-1]);
for(j=max-2;j>=0;j--)
printf("%04d",a[j]);
printf("\n");
}
return 0;
}
java代码实现:
import java.math.BigInteger;
import java.util.Scanner;
class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int n=sc.nextInt();
BigInteger p=BigInteger.ONE;
for(int i=2;i<=n;i++){
p=p.multiply(BigInteger.valueOf(i));
}
System.out.println(p);
}
}
}