本文共 1400 字,大约阅读时间需要 4 分钟。
蒜头君对阶乘产生了兴趣,他列出了前 1010 个正整数的阶乘以及对应位数的表:
nn
n!n!
位数
1
1
1
2
2
1
3
6
1
4
24
2
5
120
3
6
720
3
7
5040
4
8
40320
5
9
362880
6
10
3628800
7
对于蒜头君来说,再往后就很难计算了。他试图寻找阶乘位数的规律,但是失败了。现在请你帮他计算出第一个正整数的阶乘位数大于等于 1000010000 的数是多少,即求最小的正整数 nn 满足 n!n! 的位数大于等于 1000010000。
以下相关:
答案:3249
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static class dashujiecheng {
public static void main(String[] args){
BigInteger result=BigInteger.ONE;
Scanner cin=new Scanner(System.in);
int n=cin.nextInt();
for(int i=1;i<=n;i++){
result=result.multiply(new BigInteger(i+""));
}
System.out.println(result);
}
}
}
下面也可以
import java.math.BigDecimal;
import java.util.Scanner;
public class Main {
public static class dashujiecheng {
public static BigDecimal factorial(BigDecimal n){
BigDecimal bd1 = new BigDecimal(1);//BigDecimal类型的1
BigDecimal bd2 = new BigDecimal(2);//BigDecimal类型的2
BigDecimal result = bd1;//结果集,初值取1
while(n.compareTo(bd1) > 0){//参数大于1,进入循环
result = result.multiply(n.multiply(n.subtract(bd1)));//实现result*(n*(n-1))
n = n.subtract(bd2);//n-2后继续
}
return result;
}
public static void main(String[] arguments){
System.out.println("请输入阶乘数:");
Scanner sc = new Scanner(System.in);
BigDecimal n = sc.nextBigDecimal();
System.out.println(factorial(n));
System.out.println("ok");
//String str=sc.next();
//System.out.println(str.length());
sc.close();
}
}
}
转载地址:http://egeav.baihongyu.com/