快速幂
来源:互联网 发布:如何开淘宝网店 编辑:程序博客网 时间:2024/06/05 18:45
快速幂就是快速幂取模的简称,用到了二分的思想,用来求解a^b%p的这类问题。
在知道代码前,需要了解一些关于模运算的规则
基本运算规则如下
(a + b) % p = (a % p + b % p) % p (1)
(a - b) % p = (a % p - b % p) % p (2)
(a * b) % p = (a % p * b % p) % p (3)
(a^b) % p = ((a % p)^b) % p (4)
快速幂用到的就是(3)这条
例如求2^64%3:
继续推下去的话计算次数是log2b次的,也就是对b进行二分,最后只要计算a*a%c就可,算法其实就是这个过程的逆推
笔者举例是b是2的n次的是为了好理解,当b分奇偶时可额外处理
int powermod(int a,int b,int c){ int ans=1; a=a%c; while(b>0) { if(b%2==1) //当b为奇数时的特殊处理 ans=(ans*a)%c; b=b/2; a=(a*a)%c; //中心思想是二分实现的逆推 } return ans;}
0 0
- 快速矩阵快速幂
- 快速幂,快速幂取模
- 快速幂 + 快速幂取模
- 快速幂 快速幂取模
- 快速幂&&快速乘法
- 快速幂&快速乘
- 快速幂 快速乘法
- 快速幂 快速幂取模
- 快速幂+快速乘法
- 【快速幂】【快速幂取模】
- 快速乘法-快速幂
- 快速乘/快速幂/矩阵快速幂
- 快速乘 快速幂 矩阵快速幂
- 快速幂,快速幂取模,矩阵快速幂
- 快速幂
- 快速幂
- 快速幂
- 快速幂
- netbox问题, 无法创建NetBox.HttpServer,错误800A01AD
- 在 springmvc 中配置 json 的几种方法
- poj 1182 食物链(经典并查集)
- 迅雷程序员的成长之路
- 安装python及其IDE
- 快速幂
- PAT-乙级 1006.换个格式输出整数(15)
- wndr4300
- 【IMWeb训练营作业】Vue Select Demo
- 关于java中的“增强”类的几种方法
- 分组
- Elastic search的日期问题
- 抽象
- 《程序员的思维修养》读书总结