[LintCode]快速幂(数论)
2016-06-08 11:41
190 查看
计算a^n % b,其中a,b和n都是32位的整数。
快速幂搞就过了.快速幂首先就是要知道
(a*b)%c = ((a%c)*b)%c ,所以经过推导得出.
(a^n)%b = ((((a%b)*a)%b)*a)..........%b)*a) %b (n次)
这样只能解决的a^n 超出计算机计数范围,复杂度还是没有降下来呢.
怎么办呢^O^,bit-manipulation!!!!!!
具体详解自行百度好了^_^(利用了二分的思想)
Code:
快速幂搞就过了.快速幂首先就是要知道
(a*b)%c = ((a%c)*b)%c ,所以经过推导得出.
(a^n)%b = ((((a%b)*a)%b)*a)..........%b)*a) %b (n次)
这样只能解决的a^n 超出计算机计数范围,复杂度还是没有降下来呢.
怎么办呢^O^,bit-manipulation!!!!!!
具体详解自行百度好了^_^(利用了二分的思想)
Code:
class Solution { /* * @param a, b, n: 32bit integers * @return: An integer */ public int fastPower( int a, int b, int n ) { Long ret = new Long(1); long t=0; t=a; if(b==1) return a%b; while(n>0){ if(n%2==1){ ret = (ret*t)%b; } n=n>>1; t=(t*t)%b; } return ret.intValue(); } };
相关文章推荐
- 《构建之法》阅读笔记--4
- jquery横向手风琴效果
- .NET-WEB网站部署的过程中需要注意的问题
- WEB集群相关知识
- maven项目打包发布问题-Unable to locate Spring NamespaceHandler for XML schema namespace
- Python while 循环使用的简单实例
- 232. Implement Queue using Stacks
- PHP_SQL根据当前坐标查询5公里以内的信息
- 盒子模型
- 关于express中间件的简要解析之应用级、路由级中间件(一)
- jQuery焦点图轮播插件KinSlideshow用法分析
- 342. Power of Four
- 样本统计量与总体的关系,抽样分布的概念性质
- mysql 查询表结构SQL
- ceph crushrule多种配置例子
- 让文本框会思考
- Nginx配置实战
- SpringMVC中url-pattern /和/*的区别
- 字符串的包含
- 左右晃动的动画