您当前的位置: 首页 >  算法

*DDL_GzmBlog

暂无认证

  • 2浏览

    0关注

    605博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

[算法总结] 快速幂

*DDL_GzmBlog 发布时间:2021-06-19 17:56:51 ,浏览量:2

目录
  • 前言
  • 算法描述
  • CODE:

前言

因为 刚刚在学 逆元 才发现 我对这个 反复平方法这么陌生 所以再重温一遍

算法描述

计算 a^n mod p

a^n = a* a* a*…*a (这种方法 在 a 和 n 太大的时候 就不能用了)

但是我们知道 a^(b+c) = a^b *a^c

因此我们可以通过 二进制取幂

因为对于一个数 n 有 log⌊n⌋+1 个 二进制数

所以 a^n 可以拆为 在这里插入图片描述

所以我们只需要计算 O( log n ) 次就可以计算出 a^n

CODE:

“>>=1” 表示除2 “b&1” 是表示在b的二进制中的位置正好是1 所以需要统计res(懂了 yes!)

long long binpow(long long a, long long b, long long m) {
  a %= m;
  long long res = 1;
  while (b > 0) {
    if (b & 1) res = res * a % m;
    a = a * a % m;
    b >>= 1;
  }
  return res;
}
关注
打赏
1657615554
查看更多评论
立即登录/注册

微信扫码登录

0.0382s