oj1089java

最早的想法是,计算阶乘结果,然后转化为字符串,计算长度,用过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几乎一直很小

反正后来也算不出了,看不懂 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部