LintCode 快速幂
LintCode 快速幂
计算ana^{n} % b ,其中a,b和n都是32位的整数。
样例
例如
2312^{31} % 3 = 2
例如 1001000100^{1000} % 1000 = 0
Solution:
显然不能先计算ana^{n}之后再取余。因为,ana^{n}会溢出。
因此,需要利用取模运算的乘法法则:
(a * b) % p = (a % p * b % p) % p
则有
ana^{n}%p = (a1/2a^{1/2}%p)×\times(a1/2a^{1/2}%p)%p = ........
注意:
1. n = 0 和 n = 1的情况
2. n为奇数时
Talk is cheap, show me the code!
class Solution {/** @param a, b, n: 32bit integers* @return: An integer*/public int fastPower(int a, int b, int n) {// write your code hereif (n == 0)return 1 % b;else if (n == 1) return a % b;else if (n < 0)return -1;long product = fastPower(a, b, n/2);product = (product*product) % b;if (n % 2 == 1) product = (product * (a%b))%b; //equal: product = (product * a)%b;return (int)(product);}
};
Reference:
Lintcode: Fast Power 解题报告 - Yu’s Garden - 博客园
LintCode 快速幂相关推荐
- 矩阵快速幂+构造方法
与快速幂一样,可以将递推式通过二进制的方式来进行优化,这个学了快速幂就是十分容易理解 大概的板子如下: struct mat///自己定义大小的矩阵 {ll m[11][11]; }; mat mul ...
- 【做题】SRM701 Div1 Hard - FibonacciStringSum——数学和式&矩阵快速幂
原文链接 https://www.cnblogs.com/cly-none/p/SRM701Div1C.html 题意:定义"Fibonacci string"为没有连续1的01串 ...
- 快速幂 + 矩阵快速幂
快速幂 1 #include<iostream> 2 #include<algorithm> 3 #include<cstring> 4 #define LL lo ...
- BZOJ1965 [Ahoi2005]SHUFFLE 洗牌 快速幂
欢迎访问~原文出处--博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1965 题意概括 对于扑克牌的一次洗牌是这样定义的,将一叠N(N为偶数)张扑克牌平均分成上下两叠,取 ...
- 牛客网练习赛44-B(快速幂+模拟)
题目链接:https://ac.nowcoder.com/acm/contest/548/B 题意:计算m/n小数点后k1位到k2位,1≤m≤n≤109,1<=k1<=k2<=109 ...
- 【ACM】杭电OJ 4704 Sum (隔板原理+组合数求和公式+费马小定理+快速幂)
http://acm.hdu.edu.cn/showproblem.php?pid=4704 1.隔板原理 1~N有N个元素,每个元素代表一个1.分成K个数,即在(N-1)个空挡里放置(K-1)块隔板 ...
- HDU4549(矩阵快速幂+快速幂)
f(n)=a^f(n-1) + b^f(n-2):计算矩阵部分用矩阵快速幂:计算a的幂次和b的幂次用快速幂. #include<iostream> #include<algorith ...
- [HNOI2008]GT考试[矩阵快速幂+kmp优化的dp]
解题思路:假如说我们用f[i]表示长度为i的串能组合成无不吉利数字的组合的个数的话我们无法找到f[i]和f[i+1]的关系,就是我们下一位填某个数字会不会出现不吉利串,这就和你前面的串末尾于不吉利串重 ...
- 解题报告(一)B、(CF453D) Little Pony and Elements of Harmony(FWT经典套路 + 任意模数 k 进制FWT + 快速幂)(2)
繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...
- 【学习笔记】超简单的多项式快速幂
整理的算法模板合集: ACM模板 目录 P5245 [模板]多项式快速幂 普通版(a0=1a_0=1a0=1) vector版本AC代码 加强版(a0≠1a_0 \neq 1a0=1) 点我看 ...
最新文章
- MS SQL入门基础:启动与关闭服务器
- 卷积神经网络的“封神之路
- 常见排序算法详解 (收藏!)
- nginx指定配置文件启动_NGINX安全加固手册
- 大熊猫学生网页设计模板 静态HTML动物保护学生网页作业成品 DIV CSS大熊猫野生动物主题静态网页
- 文字滚动插件(css3动画)- 代码篇
- Maven下载及安装教程
- linux 执行命令详细步骤,Linux命令行使用教程
- Phaserjs基础教程第二节:加载图片、文字和动画
- 随机森林回归预测r语言_R语言 决策树和随机森林 回归分析
- C++读取图片二进制数据并保存
- 富媒体消息和传统短信有何区别?
- 色环电阻的电阻值大小的确定
- 互联网数据中心(Internet Data Center,IDC)
- 如何看待区块链游戏,避免陷入区块链游戏骗局
- 在自动UNDO管理情况下,如何手工增加undo段
- Swordfish【prim算法】
- 代码出现bug时,情商高和情商低程序员表现,产品经理:差太多
- Cefsharp——将Cefsharp相关库集中放到程序的子目录下
- 如何下载高德离线地图瓦片数据