首页 > 其他 > 详细

杭电1042(N!)

时间:2015-04-23 15:47:11      阅读:255      评论:0      收藏:0      [点我收藏+]

点击打开杭电1042

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


杭电1042(N!)

原文:http://blog.csdn.net/u011479875/article/details/45221025

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!