NYOJ 28-大数阶乘

NYOJ 28-大数阶乘

内存限制:64MB 时间限制:3000ms 特判: No

通过数:295 提交数:625 难度:3

题目描述:
我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它?
输入描述:
输入一个整数m(0 输出描述:
输出m的阶乘,并在输出结束之后输入一个换行符
样例输入:
复制
50
样例输出:
30414093201713378043612608166064768844377641568960512000000000000
提示:
没有提示哦
来源:
经典题目

import java.math.BigInteger;
import java.util.Scanner;

public class Main {
    public static void main(String args[]){
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            int scc=sc.nextInt();
            System.out.println(factorial(scc));
        }
    }
    public static BigInteger factorial(int num) {
        if (num < 1) {
            throw new RuntimeException("num can't < 1");
        }
        if (num == 1) {
            return BigInteger.ONE;
        } else {
            BigInteger bigInteger = BigInteger.valueOf(num);
            return bigInteger.multiply(factorial(num - 1));
        }
    }
}

你可能感兴趣的:(ACM)