快速幂取模
来源:互联网 发布:熊孩子洗琴 知乎 编辑:程序博客网 时间:2024/06/13 04:39
先讨论无需取模的
当b为偶数时:ab=a(b/2)*2=(a2)b/2
当b为奇数时:ab=a*ab-1=a*(a2)(b-1)/2
如 28=(22)4 27=2*(22)3
所以,我们可以如此迭代下去
210=(22)5=(22)*[(22)2]2
① ② ③
指数为10 是一个偶数,则底数2平方,指数变为一半 [ ①→② ]
指数为5 是一个奇数,则先将底数提出作为系数(22),此时指数为4 是一个偶数,则底数22再平方,指数再变为一半 [ ②→③ ]
归纳总结得到:
当指数大于1时,若为 偶数 则将指数除以2,底数平方
若为 奇数 则先提出一个为底数的系数(可直接把该系数乘进ans中),所以指数减1,然后再按照 偶数 的办法做
不断迭代下去,当指数为1时,则直接得出答案
最后只要将每次相乘时取模即可,时间复杂度O(log2b)
inline int mi(int a,int b)
{
int ans=1;
a%=mo;
while (b)
{
if (b&1) ans=ans*a%mo;
b>>=1;
a=a*a%mo;
}
return ans;
}
0 0
- 快速幂,快速幂取模
- 快速幂 + 快速幂取模
- 快速幂 快速幂取模
- 快速幂 快速幂取模
- 【快速幂】【快速幂取模】
- 快速幂,快速幂取模,矩阵快速幂
- 快速幂取模
- 快速幂取模
- 快速幂取模
- 快速幂取模
- 快速幂取模
- 快速幂取模
- 快速幂取模
- 快速幂取模
- 快速幂取模
- 快速幂取模
- 快速幂取模
- 快速幂取模
- 如何给openstack虚拟机配置静态IP
- 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- 常见算法:C语言求最小公倍数和最大公约数的算法
- 讯飞语音识别之微信语音arm文件转换wav文件
- java 中String , StringBuilder , StringBuffer的一些比较
- 快速幂取模
- 软考总结
- Freemarker商品详情页静态化服务调用处理
- Uva442 Matrix Chain Multiplication【stack】【例题6-3】
- 数组初始化问题
- bzoj1060 [ZJOI2007]时态同步 [树形dp][贪心…]
- 一道三角函数相关级数求和问题
- 反射简单的应用
- Poj 3259 Wormholes判断负权回路(spfa模板题)