lintcode刷题——快速幂
来源:互联网 发布:日本对外贸易数据2015 编辑:程序博客网 时间:2024/06/01 09:30
lintcode刷题之快速幂。
原题如下:
计算an % b,其中a,b和n都是32位的整数。
例如 231 % 3 = 2
例如 1001000 % 1000 = 0
1、直接算出幂再取余肯定是不可取的,因为数值太大,会溢出;
2、使用取模运算乘法法则:a^n%b=(a^(n/2)%b)*(a^(n/2)%b)%b,即使用递归的方法来求解;
3、要注意当n为奇数的时候,需要单独考虑,列如计算2^3%3时,n的值为3,除以2之后为1,2^3%3=(2%3)*(2%3)%3结果还需要再乘上一次(2%3),即结果是
2^3%3=(2%3)*(2%3)*(2%3)%3,即奇数次幂的时候在结果后还要乘上一次(a%b)然后再%b.
具体的C++代码如下:
class Solution {
public:
/*
* @param a, b, n: 32bit integers
* @return: An integer
*/
int fastPower(int a, int b, int n) {
// write your code here
if(n==0)
{
return 1%b;
}
if(n==1)
{
return a%b;
}
if(n<0)
{
return -1;
}
long res=fastPower(a,b,n/2);
res=(res*res)%b;
if(n%2==1)
{
res=(res*(a%b))%b;
}
return res;
}
};
- 快速幂—LintCode
- lintcode刷题——快速幂
- LintCode-快速幂
- Lintcode快速幂
- lintcode-快速幂-125
- LintCode 快速幂
- Lintcode 快速幂
- lintcode之快速幂
- lintcode ----快速幂
- LintCode 140-快速幂
- LintCode :快速幂
- lintcode(140)快速幂
- 快速幂-LintCode
- [LintCode]140.快速幂
- [LintCode] 快速幂 Fast Power
- LintCode刷题链表排序——归并和快速排序
- LintCode-剑指Offer-(140)快速幂
- lintcode刷题——x的n次幂
- Caffe(CPU)-Ubuntu16.04下安装教程(未完成)
- php mysql数据库备份
- leetcode--Construct Binary Tree from Preorder and Inorder Traversal
- 蓝桥杯-兰顿蚂蚁(Java)
- poj 2777 Count Color(线段树区间更新+技巧)
- lintcode刷题——快速幂
- javascript/js 原生动态引入外部css文件及动态插入css代码片段
- FileZilla上传文件到外网FTP服务器响应:550 Permission denied.
- Scala实战—连接oracle及mysql数据库
- overlay 如何实现跨主机通信?- 每天5分钟玩转 Docker 容器技术(52)
- Android Translucent System Bar 开发详解-实现沉浸式通知栏(通知栏与导航栏颜色相同)
- Android中轮播所用到viewPager.PageTransformer 页面滑动时候处理图片缩放效果代码
- 判断一个树是不是平衡二叉树
- Android SDK 之 InputMethodService 详解