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 快速幂相关推荐

  1. 矩阵快速幂+构造方法

    与快速幂一样,可以将递推式通过二进制的方式来进行优化,这个学了快速幂就是十分容易理解 大概的板子如下: struct mat///自己定义大小的矩阵 {ll m[11][11]; }; mat mul ...

  2. 【做题】SRM701 Div1 Hard - FibonacciStringSum——数学和式&矩阵快速幂

    原文链接 https://www.cnblogs.com/cly-none/p/SRM701Div1C.html 题意:定义"Fibonacci string"为没有连续1的01串 ...

  3. 快速幂 + 矩阵快速幂

    快速幂 1 #include<iostream> 2 #include<algorithm> 3 #include<cstring> 4 #define LL lo ...

  4. BZOJ1965 [Ahoi2005]SHUFFLE 洗牌 快速幂

    欢迎访问~原文出处--博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1965 题意概括 对于扑克牌的一次洗牌是这样定义的,将一叠N(N为偶数)张扑克牌平均分成上下两叠,取 ...

  5. 牛客网练习赛44-B(快速幂+模拟)

    题目链接:https://ac.nowcoder.com/acm/contest/548/B 题意:计算m/n小数点后k1位到k2位,1≤m≤n≤109,1<=k1<=k2<=109 ...

  6. 【ACM】杭电OJ 4704 Sum (隔板原理+组合数求和公式+费马小定理+快速幂)

    http://acm.hdu.edu.cn/showproblem.php?pid=4704 1.隔板原理 1~N有N个元素,每个元素代表一个1.分成K个数,即在(N-1)个空挡里放置(K-1)块隔板 ...

  7. HDU4549(矩阵快速幂+快速幂)

    f(n)=a^f(n-1) + b^f(n-2):计算矩阵部分用矩阵快速幂:计算a的幂次和b的幂次用快速幂. #include<iostream> #include<algorith ...

  8. [HNOI2008]GT考试[矩阵快速幂+kmp优化的dp]

    解题思路:假如说我们用f[i]表示长度为i的串能组合成无不吉利数字的组合的个数的话我们无法找到f[i]和f[i+1]的关系,就是我们下一位填某个数字会不会出现不吉利串,这就和你前面的串末尾于不吉利串重 ...

  9. 解题报告(一)B、(CF453D) Little Pony and Elements of Harmony(FWT经典套路 + 任意模数 k 进制FWT + 快速幂)(2)

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

  10. 【学习笔记】超简单的多项式快速幂

    整理的算法模板合集: ACM模板 目录 P5245 [模板]多项式快速幂 普通版(a0=1a_0=1a0​=1) vector版本AC代码 加强版(a0≠1a_0 \neq 1a0​​=1) 点我看 ...

最新文章

  1. MS SQL入门基础:启动与关闭服务器
  2. 卷积神经网络的“封神之路
  3. 常见排序算法详解 (收藏!)
  4. nginx指定配置文件启动_NGINX安全加固手册
  5. 大熊猫学生网页设计模板 静态HTML动物保护学生网页作业成品 DIV CSS大熊猫野生动物主题静态网页
  6. 文字滚动插件(css3动画)- 代码篇
  7. Maven下载及安装教程
  8. linux 执行命令详细步骤,Linux命令行使用教程
  9. Phaserjs基础教程第二节:加载图片、文字和动画
  10. 随机森林回归预测r语言_R语言 决策树和随机森林 回归分析
  11. C++读取图片二进制数据并保存
  12. 富媒体消息和传统短信有何区别?
  13. 色环电阻的电阻值大小的确定
  14. 互联网数据中心(Internet Data Center,IDC)
  15. 如何看待区块链游戏,避免陷入区块链游戏骗局
  16. 在自动UNDO管理情况下,如何手工增加undo段
  17. Swordfish【prim算法】
  18. 代码出现bug时,情商高和情商低程序员表现,产品经理:差太多
  19. Cefsharp——将Cefsharp相关库集中放到程序的子目录下
  20. 如何下载高德离线地图瓦片数据

热门文章

  1. 微型计算机内存储容量的基本单位是,计算机中用来表示内存储器容量大小的基本单位是()。...
  2. ARM汇编语言指令集汇总
  3. 批发网商品采集API接口
  4. 软件测试方法——黑盒测试
  5. 【数据挖掘】数据挖掘简介及十大经典算法
  6. IE下载xlsx、docx、pptx文件时自动变成zip文件问题
  7. HTML基本语法总结
  8. 上网账号口令怎么获取_我的路由器上网账号和口令忘记了该怎么办
  9. 权重计算方法三:变异系数法(Coefficient of Variation)
  10. 自然资源部标准地图底图转矢量Shapefile并配准