NYOJ 28-大数阶乘
内存限制:64MB 时间限制:3000ms 特判: No
通过数:295 提交数:625 难度:3
题目描述:
我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它?
输入描述:
输入一个整数m(0<m<=5000)
输出描述:
输出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));
}
}
}