Lintcode快速幂
2015-06-27 20:17
225 查看
计算an %
b,其中a,b和n都是32位的整数。
例如 231 % 3 = 2
例如 1001000 % 1000 = 0
这题要考虑输入的a,b是否为负数,结果是否溢出,是否超时,这里用到了分治递归
b,其中a,b和n都是32位的整数。
例如 231 % 3 = 2
例如 1001000 % 1000 = 0
这题要考虑输入的a,b是否为负数,结果是否溢出,是否超时,这里用到了分治递归
class Solution { public: /* * @param a, b, n: 32bit integers * @return: An integer */ int fastPower(int a, int b, int n) { // write your code here long long res = 0; if (a == 0 || b==0) return 0; a = a%b; if (a>0) { res = power(a,b,n); if (n <0) { res = 1/res; } } else { res = power(a,b,n); if (n%2 ==1) { res = 0-res; } if (n < 0) { res = 1/res; } } return res%b; } long long power(int a,int b,int n) { if (n == 0) { return 1; } if (n ==1) { return a; } long long result = power(a,b,n>>1); result = result*result %b; if (n & 0x1 ==1) { result =result *a%b; } return result; } };
相关文章推荐
- LeetCode题解——2Add Two Numbers
- J2EE之WebLogic Server
- 关于重写toString方法
- subprocess
- 黑马程序员_java 数组
- 【Unity3d】资源依赖反查工具
- 面向模式的软件体系结构电子书合集
- 【MVC】MusicStore相关资料
- 几种常见的线性表存储结构
- C++ 中的友元friend
- redis设计与实现电子书合集
- Openlayers3 计算地图上任意两点间的距离
- mysql主从搭建
- memory函数
- 解析XML
- glog的编译和使用(转+总结)
- 考试一,综合练习,C语言,
- windows下mysql主从出现Failed to open the relay log(relay_log_pos 248)解决办法
- 功能和形式的反思sql声明 一个
- ASP.NET 前后台调用方法