快速幂
来源:互联网 发布:帝国cms 全站伪静态 编辑:程序博客网 时间:2024/06/11 21:14
源自百度百科:原文
快速幂
顾名思义,快速幂就是快速算底数的n次幂。其时间复杂度为 O(log₂N), 与朴素的O(N)相比效率有了极大的提高。
原理
以下以求a的b次方来介绍
把b转换成二进制数。
该二进制数第i位的权为
例如
11的二进制是1011
11 = 2³×1 + 2²×0 + 2¹×1 + 2º×1
因此,我们将a¹¹转化为算
实现
快速幂可以用位运算来实现:
b & 1
//取b二进制的最低位,判断和1是否相同,相同返回1,否则返回0,可用于判断奇偶
b>>1
//把b的二进制右移一位,即去掉其二进制位的最低位
递归版:
ll
pow
(ll a,ll i)
{
if
(i==0)
return
1;
int
temp=
pow
(a,i>>1);
temp=temp*temp%MOD;
if
(i&1)
temp=(ll)temp*a%MOD;
return
temp%MOD;
}
非递归:
int
pow4(
int
a,
int
b)
{
int
r=1,base=a;
while
(b)
{
if
(b&1) r*=base;
base*=base;
b>>=1;
}
return
r;
}
阅读全文
0 0
- 快速矩阵快速幂
- 快速幂,快速幂取模
- 快速幂 + 快速幂取模
- 快速幂 快速幂取模
- 快速幂&&快速乘法
- 快速幂&快速乘
- 快速幂 快速乘法
- 快速幂 快速幂取模
- 快速幂+快速乘法
- 【快速幂】【快速幂取模】
- 快速乘法-快速幂
- 快速乘/快速幂/矩阵快速幂
- 快速乘 快速幂 矩阵快速幂
- 快速幂,快速幂取模,矩阵快速幂
- 快速幂
- 快速幂
- 快速幂
- 快速幂
- tomcat 配置ssl/https 证书问题(一)- No enum constant org.apache.tomcat.util.net.SSLHostConfigCertificate.Typ
- 聚类算法----之----(k-means)
- Android Studio 打Jar包和混淆的Jar包
- spring架构解析(一)--IoC容器实现
- Can not read response from server. Expected to read 4 bytes, read 0 bytes
- 快速幂
- git 本地仓库和远程仓库及本地分支和远程分支
- IntelliJ IDEA快捷键(常用)
- C#“必须先将当前线程设置为单个线程单元(STA)模式方可进行OLE调用”异常解决方案
- Finding a Point on a Bézier Curve: De Casteljau's Algorithm
- No qualifying bean of type found for dependency: expected at least 1 bean which qualifies as autowir
- 由一道编程题学会希尔排序
- 解决Winform panel动态加载Form页面无法随着panel最大化的问题
- 登录注册 图片验证码生成