懒得打代码系列…
不过这个代码挺短的死背下来也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. Java EE学习笔记(五)

    Spring事务管理 1.Spring事务管理概述 1).在实际开发中,操作数据库时都会涉及到事务管理问题,为此Spring提供了专门用于事务处理的API.(事务特性:ACID,原子性,一致性,隔离性 ...

  2. 工作的时候 用到了 获取时间 DateTime 整理了一下

    获得当前系统时间: DateTime dt = DateTime.Now; Environment.TickCount可以得到“系统启动到现在”的毫秒值 DateTime now = DateTime ...

  3. 如何在VirtualBox虚拟机中安装XP系统? 转

    关闭VM (windows 7 )的方法, 使用 退出 保持状态 开启VM (windows 7 )的方法, 选择启动 ######Iissue 1 网络连接不上,可以重新初始化 网络连接. #### ...

  4. JAVA常用知识总结(十二)——数据库(二)

    MySQL主从热备份工作原理 简单的说:就是主服务器上执行过的sql语句会保存在binLog里面,别的从服务器把他同步过来,然后重复执行一遍,那么它们就能一直同步啦. 整体上来说,复制有3个步骤: 作 ...

  5. 109 Convert Sorted List to Binary Search Tree 有序链表转换二叉搜索树

    给定一个单元链表,元素按升序排序,将其转换为高度平衡的BST.对于这个问题,一个高度平衡的二叉树是指:其中每个节点的两个子树的深度相差不会超过 1 的二叉树.示例:给定的排序链表: [-10, -3, ...

  6. 3、从尾到头打印链表------------>剑指offer系列

    题目 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 分析 要了解链表的数据结构: val属性存储当前的值,next属性存储下一个节点的引用. 要遍历链表就是不断找到当前节点的nex ...

  7. 三行命令搞定查询Python安装目录

    想为Python添加一个库文件到默认目录,却忘记了Python安装目录. 其实,只要用下面三行命令,就可以轻松得到Python安装路径了. 进入Python >>>import sy ...

  8. RSA不对称加密和公钥 私钥

    理论上只要有加密的规则 基本都是可以解密的 但是如果解密需要消耗的时间过长 比如1000年 解密过后已经没什么意义了 此时可认为这种算法不能被破解 也就是说此加密可信 MD5 是一种单向操作 加密后不 ...

  9. UVA Live 3713 Astronauts (2-SAT)

    用布尔变量表示状态,把限制条件转化为XνY的形式以后跑2SAT,根据变量取值输出方案. #include<bits/stdc++.h> using namespace std; ; #de ...

  10. Educational Codeforces Round 11 C hard process_补题——作为司老大的脑残粉

    司老大当时教了一种姿势枚举连续K个0,说实话当时比赛写这题完全蒙了 纵然后来知道思路还是写了一段时间 真的是.. 题目大意 n长度的序列,由0 1构成 我们可以改变 k个0为1 求可以得到的最长连续1 ...