懒得打代码系列…
不过这个代码挺短的死背下来也ok

解析在最下面
建议自己手动试个数据理解一下 比如 3^5
^^
原理:a ^ b = a ^ (b / 2) * 2
(b是奇数的话还要再乘一个a)

还有就是我发现自己英语词汇还是太少了QAQ
只能乖乖打拼音…
装不了逼了真的超生气

低端版本
这个都看得懂 就懒得注释了嘻嘻:)

int quick_mi( int DiShu , int ZhiShu , int Mo ){
if(ZhiShu == 1) return DiShu ;
int ans ;
ans = quick_mi(DiShu , ZhiShu / 2 , Mo) % Mo;
ans = ans * ans % Mo ;
if(ZhiShu >>= 1){
ans = ans * DiShu % Mo ;
}
return ans ;
}

高级版本
(反正那些一眼看上去看不懂的对我来说都挺高级的^^

int quick_mi( int DiShu , int ZhiShu , int Mo ){
int ans = 1 ;
while( ZhiShu ){
if( ZhiShu & 1 ) //如果当前指数为奇数
ans = ans * DiShu % Mo ;//上下两行代码的顺序要理解一下
DiShu *= DiShu ;
ZhiShu >>= 1 ; //指数除以二
}
return ans ;
}

[其实就是指数不断除二 底数再不断乘二啦 还要不断 % Mo防止爆掉数据范围]
[不过要特别处理指数为奇数的时候 这里没有写出来]
ans = DiShu ^ ZhiShu % Mo ;
ans = { DiShu ^ ( ZhiShu / 2 ) * DiShu ^ ( ZhiShu / 2 ) } % Mo ;
ans = DiShu ^ ( ZhiShu / 2 ) ^ 2 % Mo ;
[当指数为奇数的时候 当前步还要再多乘一次底数]
ans = ( DiShu * DiShu ) ^ ( ZhiShu / 2 ) % Mo ;
ans = ( DiShu * DiShu ) ^ ( ZhiShu / 2 / 2 ) ^ 2 % Mo ;
ans = { ( DiShu * DiShu ) ^ ( DiShu * DiShu ) } ^ ( ZhiShu / 2 / 2 ) % Mo ;
[同理]
…..
[直到当前指数由 1 / 2 变成0的时候最后的答案就算出来啦]
[不要忘记奇数的处理!]

矩阵快速幂的原理也是一样的
只不过把*变成了矩阵意义上的乘而已
^^

c++ 快速幂 代码实现的更多相关文章

  1. HDU2035 人见人爱A^B(快速幂)

    描述: 求A^B的最后三位数表示的整数.说明:A^B的含义是“A的B次方”. 输入: 输入数据包含多个测试实例,每个实例占一行,由两个正整数A和B组成(1<=A,B<=10000),如果A ...

  2. 洛谷试炼场-简单数学问题-P1045 麦森数-高精度快速幂

    洛谷试炼场-简单数学问题 B--P1045 麦森数 Description 形如2^P−1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果PP是个素数,2^P-1 不一定也是素数.到19 ...

  3. 矩阵二分快速幂优化dp动态规划

    矩阵快速幂代码: int n; // 所有矩阵都是 n * n 的矩阵 struct matrix { int a[100][100]; }; matrix matrix_mul(matrix A, ...

  4. poj3070矩阵快速幂求斐波那契数列

      Fibonacci Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13172   Accepted: 9368 Desc ...

  5. 递归实现快速幂(C++版)

    快速幂是什么? 顾名思义,快速幂就是快速算底数的n次幂.其时间复杂度为 O(log₂N), 与朴素的O(N)相比效率有了极大的提高. 就以a的b次方来介绍: 把b转换成二进制数,该二进制数第i位的权为 ...

  6. ACM学习历程—HDU 5451 Best Solver(Fibonacci数列 && 快速幂)(2015沈阳网赛1002题)

    Problem Description The so-called best problem solver can easily solve this problem, with his/her ch ...

  7. quickpow || 快速幂

    洛谷例题 推荐自行脑补:百度百科 如果  ,那么 : 前言:快速幂就是快速算底数的n次幂.其时间复杂度为 O(log₂N), 与朴素的O(N)相比效率有了极大的提高. 拿题目样例 Input :2 1 ...

  8. HLOJ1361 Walking on the Grid II 矩阵快速幂

    题目分析: 就当是一次记录吧,2013年绍兴市市赛的一题,重现赛当时我想递推可能是矩阵快速幂吧,但是这个递推公式真没推出来(赛后猛如虎系列),这题和第一题有联系又有区别,第一题的递推很简单,dp[i] ...

  9. ACM | 算法 | 快速幂

    目录 快速幂 快速幂取模 矩阵快速幂 矩阵快速幂取模 HDU1005练习 快速幂 ​ 幂运算:\(x ^ n\) ​ 根据其一般定义我们可以简单实现其非负整数情况下的函数 定义法: int Pow ( ...

随机推荐

  1. POJ-1181-食物链

    链接:https://vjudge.net/problem/POJ-1182 题意: 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A. 现有N个动物,以1 ...

  2. python入门之流程控制

    if else 格式: if 条件 command1 command2elif 条件: command3    command4 else: command3 command4 注意条件后和else后 ...

  3. Oracle 云计算

    OCM(oracle 应用整合服务器,人工智能) XCM(exdata) BCM (大数据机器) 云运维人员 ,不需要本地人员

  4. Connection conn = DriverManager.getConnection("jdbc:odbc:bbs");

    Connection conn = DriverManager.getConnection("jdbc:odbc:bbs"); 这是JDBC连接数据库的时候用的一句话,,Conne ...

  5. ubuntu用户注销后登录xmodmap无法自动运行

    2015-12-17 21:34:50 还是无法解屏后 自动运行xmodmap ,继续谷歌找到一方法,选装gnome-tweak-tool sudo apt-get install gnome-twe ...

  6. hihocoder1860 最大异或和

    思路: 把N个前缀异或和插入一棵trie树中,然后对每个前缀异或和x计算能使x ^ y最大的前缀异或和y.利用了异或运算的a ^ b ^ a = b的性质. 参考了https://cloud.tenc ...

  7. plpgsql: 动态插入数据 1

    --目标:1.建立一个函数实现 输入一个表名(tableName)tableName,一个JSON串{feildName1:feildVale1,feildName2:feildVale2} -- 然 ...

  8. UIView动画效果之----翻转.旋转.偏移.翻页.缩放.取反的动画效

    翻转的动画 //开始动画 [UIView beginAnimations:@"doflip" context:nil]; //设置时常 [UIView setAnimationDu ...

  9. 导入maven的java web项目运行报错找不到Spring监听器

    本地成功运行的一个maven项目,在另一台机器复制下来并导入,运行时报错: java.lang.ClassNotFoundException: org.springframework.web.cont ...

  10. url post 请求方法

    最近的项目是给手机app 提供方法. 因此 此方法可以进行接口测试 static class HttpClient { static CookieContainer cookies = new Coo ...