【快速幂入门】自由弹簧

又来写一些没营养的东西了…

题目传送门

小王一直都想在太空遨游,但是现在的他并没有这个超能力,所以他买了个 "自由弹簧" 打算过过瘾。

这个 ”自由弹簧“ 在初次使用时,会将小王弹射到 N2 <= N <= 200000) 米的高度,当弹簧落地时,会触发 ”自由弹簧“ 的超能力,会自动将小王弹射到 N * N 米的高度!

”自由弹簧“ 的生产者设置了一道保护机制,当弹射高度 N 超过 100000007 米时,会自动将高度降低 N % 100000007 米的位置,以此保证小王的安全。

但 ”自由弹簧“ 也有使用寿命,当落地 M2 <= M <= 200000)次(不含初次使用时的落地情况)之后,将不会再进行弹射,最终会将小王安全送回地面,并且自动消失。

小王想知道,当 ”自由弹簧“ 最后一次弹射时,会弹射到多高的高度 X ?(米,如 X 超过100000007 ,则求自动降低后的高度)

快速幂

public static long doWork(long n,long m) {
        long ans = 1;
        //代码编辑区 开始
        ans *= n;
        while(m>0){
            if((m&1)>0){
                ans = (ans*n)%MOD;
            }
            m = m>>1;
            n = (n*n)%MOD;
        }
        //代码编辑区 结束
        return ans;
    }

这里面还用到一个知识点,用位与判断一个数的奇偶,具体讲就是n&1,这个结果如果是1,那么n为奇数;如果n&1结果为0,那么n为偶数。
位运算更快速。
我在这里放一个大佬的博客

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是君倩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值