算法题解4

题目:

 解题思路:

这个202320232023数字太大,所以不能定义为int类型,开始时想先定义为long类型,然后再继续写一个循环,计算阶乘,然后再用LinkdeList的方法输出后九位 下面图片是一开始写的代码

这个代码它是不输出结果,但是一直在运行,也不报错,然后我就把num改小了,是可以输出结果,所以我觉得应该是数字太大的问题,(这个代码也可以更简化,后面不用定义LinkdeList也行,直接输出,我当时想复杂了)然后就上网搜了一下,看了有一些别人写的,发现这题其实是有规律的,在i=39之后s的后九位数字就恒定不变了,下面是代码

然后这个结果后九位为420940313。

我还在网上搜到了一个大整数类BigInteger,用这个 类的一些方法也可以将这题最终结果算出来,为420940313。然后下面是这个类的一些加减乘除等方法

public class test{
   public static void main(String[] args) {
        //加
        BigInteger a=new BigInteger("8");
        BigInteger b=new BigInteger("3");
        System.out.println("a+b="+a.add(b));
       //减
        BigInteger c=new BigInteger("6");
        BigInteger d=new BigInteger("6");
        System.out.println("d-c="+d.subtract(c));
                       
       //乘
         BigInteger e=new BigInteger("5");
         BigInteger f=new BigInteger("7");
         System.out.println("e*f="+e.multiply(f));
                       
       //除
         BigInteger g=new BigInteger("100");
         BigInteger h=new BigInteger("4");
         System.out.println("g/h="+g.divide(h));
       //类型转换
          int i=200;
          BigInteger j=BigInteger.valueOf(i);
          System.out.println("j="+j); 
                        

收获:要换思维看题目。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值