最早的想法是,计算阶乘结果,然后转化为字符串,计算长度,用过sum/10的长度-1次方
用了double和long类型,算不出1000这么大的数,100都算不出
考虑过转换成字符串,但是不知道到底怎么搞
查到了又BigInteger库,但也不知道怎么用,网上查的也很少有这么大的数(15条消息) Java练习:计算1到1000的阶乘_LZL Lee的博客-CSDN博客
不会做
查答案:
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner input=new Scanner(System.in);
int n=input.nextInt();
double sum=1.0;
for(int i=1;i<=n;i++)
{
sum*=i;
while(sum>=10)
sum/=10;
}
System.out.println((int)sum);
input.close();
}
}
(15条消息) ZZULIOJ-1089: 阶乘的最高位(Java)_张起灵-小哥的博客-CSDN博客
可以算出最高位,但是删几行代码,要阶乘的结果的话还是算不出那个结果,主要是因为将sum强制转换成了int类型,最大是2147483647,long最大是9223372036854775807,数实在太大了
但是如果不要阶乘结果,还是可以算出来位数的,一直让他除以10,这样sum几乎一直很小
反正后来也算不出了,看不懂



