码迷,mamicode.com
首页 > 其他好文 > 详细

杭电1042(N!)

时间:2015-04-23 15:50:21      阅读:239      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!