菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
447
0

快速幂

原创
05/13 14:22
阅读数 39944

我们知道对于幂运算有: ab%k=(a%k)(b%k)%k
如: 5 * 6 % 4 = (1+4)(2+4)% 4 = 1 * 2 % 4
因为 1 * 4 和 2 * 4 和4 * 4模4都为0

位运算加速

// 求 m^k mod p,时间复杂度 O(logk)。

int qmi(int m, int k, int p){
   int res = 1 % p, t = m;
   while (k){
       if (k&1) res = res * t % p;
       t = t * t % p;
       k >>= 1;
   }
   return res;
}

发表评论

0/200
447 点赞
0 评论
收藏