懒得打代码系列…
不过这个代码挺短的死背下来也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. dzzoffice 任意文件下载漏洞分析

    dzzoffice 任意文件下载 \updload\dzz\system\save.php第72行开始:    elseif($_GET['do']=='move'){    $obz=trim($_ ...

  2. Elasticsearch之入门知识

    elasticsearch是一个高度可扩展得开源全文搜索和分析的引擎.可以快速.近实时的存储,搜索和分析大量数据.通常用作底层引擎技术,为具有复杂搜索功能和要求的程序提供支持. 用处: • 运行网上商 ...

  3. js验证textarea里面是否有换行符

    var reg = /[\r\n]+/g;if(reg.test(reason)){ PopAlert("不能有换行符!"); return;}

  4. elastcisearch中文分词器各个版本

    地址 https://github.com/medcl/elasticsearch-analysis-ik/releases?after=v6.0.1

  5. js实现屏幕自适应局部

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  6. WPF中获取指定坐标依赖对象数据项

    上图中红色框区域是一个自定义的ListBox控件,需要实现的功能是,点击红框区域中某项时,获取当前选中项的数据项 控件的MouseDown事件部分代码为: var x = TreeHelper.Fin ...

  7. javascript for/forEach

    基本用法 for:for(var i=0;i<arr.length;i++) forEach:arr.forEach(function(value,index,arr){},),其中functi ...

  8. Java 实现Excel表数据的读取和写入 以及过程中可能遇到的问题

    问题1:Unable to recognize OLE stream 格式的问题要可能是因为给的数据是2010年的数据表后缀为.xlsx,要先转化成2003版的后缀为.xls 问题2: Warning ...

  9. Javafinal方法

    class Animal{     public final void eat(){         System.out.println("吃");     } } class ...

  10. HDU 4044 GeoDefense (树形DP,混合经典)

    题意: 给一棵n个节点的树,点1为敌方基地,叶子结点都为我方阵地.我们可以在每个结点安放炸弹,每点至多放一个,每个结点有ki种炸弹可选,且每种炸弹有一个花费和一个攻击力(1点攻击力使敌人掉1点hp). ...