快速幂
来源:互联网 发布:js涂膜防水 编辑:程序博客网 时间:2024/06/16 10:57
快速幂
关于快速幂,一般有两种实现方式:递归写法和非递归写法。
递归写法:
原理:当n为偶数时,a^n=a^(n/2) * a^(n/2)
当n为奇数时,a^n=a^(n/2) * a^(n/2) * a
所以可以通过计算a^(n/2)来得出a^n,不断递归下去,O(lb n)
ll power(int a,int b){if(b==0) return 1;ll t=power(a,b>>1);t*=t;if(b&1) t*=a;return t;}
非递归写法:
原理:把指数转化成二进制
e.g. a^11
11=1011(2)=1*2^3+0*2^2+1*2^1+1*2^0
a^11=a^(1*2^3+0*2^2+1*2^1+1*2^0)=a^(2^3) * 1 * a^(2^1) * a^(2^0)
共有lb a项之积,而这些项可以递推而来,(a^(2^0))^2=a^(2^1),O(lb n)
#include<iostream>using namespace std;#define ll long long int main(){int a,b,ans;cin>>a>>b;ans=1;while(b){if(b&1) ans*=a;a*=a;b>>=1;}cout<<ans<<endl;return 0;}
0 0
- 快速矩阵快速幂
- 快速幂,快速幂取模
- 快速幂 + 快速幂取模
- 快速幂 快速幂取模
- 快速幂&&快速乘法
- 快速幂&快速乘
- 快速幂 快速乘法
- 快速幂 快速幂取模
- 快速幂+快速乘法
- 【快速幂】【快速幂取模】
- 快速乘法-快速幂
- 快速乘/快速幂/矩阵快速幂
- 快速乘 快速幂 矩阵快速幂
- 快速幂,快速幂取模,矩阵快速幂
- 快速幂
- 快速幂
- 快速幂
- 快速幂
- WebLogic11g-负载分发
- ZOJ 3201 Tree of Tree
- (实验三)《数据结构》第三章 顺序栈与链栈的验证
- MCC(移动国家码)和 MNC(移动网络码)
- cocos2d-x API结构图
- 快速幂
- 4.1、Libgdx的生命周期
- Visio技巧篇之一些常用小技巧
- Lua中的基本函数库
- poj 2431 Expedition
- iOS的真机调试环节
- 数据库中视图的作用
- 让UIView有弹性移动
- 调用GetLastError 错误代码 含义