杭电1042(N!)

来源:互联网 发布:网络硬盘播放器怎么用 编辑:程序博客网 时间:2024/05/05 16:02

点击打开杭电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
123
 

Sample Output
126

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


0 0
原创粉丝点击