快速幂
来源:互联网 发布:python idle for mac 编辑:程序博客网 时间:2024/06/07 00:24
转载于 百度百科 https://baike.baidu.com/item/%E5%BF%AB%E9%80%9F%E5%B9%82/5500243?fr=aladdin
快速幂就是快速算底数的n次幂。其时间复杂度为 O(log₂N), 与朴素的O(N)相比效率有了极大的提高。
快速幂可以用位运算来实现
1
b
and
1
{也就是取b的二进制最低位(即第0位) 判断b是否为奇数,是则为1}
1
b
shr
1
{就是去掉b的二进制最低位(即第0位)}
C++实现为
1
b & 1
//取b二进制的最低位,判断和1是否相同,相同返回1,否则返回0,可用于判断奇偶
1
b>>1
//把b的二进制右移一位,即去掉其二进制位的最低位
常规求幂
1
2
3
4
5
int
pow1(
int
a,
int
b){
int
r=1;
while
(b--) r*=a;
return
r;
}
快速求幂(一般)
1
2
3
4
5
6
7
8
9
int
pow2(
int
a,
int
b){
int
r=1,base=a;
while
(b!=0){
if
(b%2) r*=base;
base*=base;
b/=2;
}
return
r;
}
快速求幂(位运算)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int
pow3(
int
x,
int
n){
if
(n==0)
return
1;
else
{
while
((n&1)==0){
n>>=1;
x*=x;
}
}
int
result=x;
n>>=1;
while
(n!=0){
x*=x;
if
(n&1) result*=x;
n>>=1;
}
return
result;
}
快速求幂(位运算,更简洁)
1
2
3
4
5
6
7
8
9
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
- 快速矩阵快速幂
- 快速幂,快速幂取模
- 快速幂 + 快速幂取模
- 快速幂 快速幂取模
- 快速幂&&快速乘法
- 快速幂&快速乘
- 快速幂 快速乘法
- 快速幂 快速幂取模
- 快速幂+快速乘法
- 【快速幂】【快速幂取模】
- 快速乘法-快速幂
- 快速乘/快速幂/矩阵快速幂
- 快速乘 快速幂 矩阵快速幂
- 快速幂,快速幂取模,矩阵快速幂
- 快速幂
- 快速幂
- 快速幂
- 快速幂
- spring与redis整合(二)--采用spring-data-redis方式
- SpringMVC下,ajax提交数据到Controller方式之一
- 面向对象和面向过程的区别
- UVA
- Unix域socket(总结)
- 快速幂
- rocketmq入门(一)
- Unity3d开发性能优化-性能分析工具Profiler使用
- TensorFlow 的工作原理
- lintcode -- 最长回文子串
- DNS解析过程原理
- 每天五分钟linux(7)-mv
- sql删除重复数据只保留一条
- 腾讯云服务器架设mir2