数值的整数次方
2017-12-27 21:46
183 查看
题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。/**
* 1.全面考察指数的正负、底数是否为零等情况。
* 2.写出指数的二进制表达,例如13表达为二进制1101。
* 3.举例:10^1101 = 10^0001*10^0100*10^1000。
* 4.通过&1和>>1来逐位读取1101,为1时将该位代表的乘数累乘到最终结果。
时间复杂度为O(logn)
*/
class Solution {
public:
double Power(double base, int exponent) {
double res = 1,curr = base;
int n;
if(exponent>0){
n = exponent;
}else if(exponent<0){
if(abs(base)<1e-7)
return 0;
n = -exponent;
}else{// exponent==0
return 1;// 0的0次方
}
while(n!=0){
if((n&1)==1) //n为奇数时,多乘一个curr
res*=curr;
curr*=curr;// 翻倍
n>>=1;// 右移一位
}
return exponent>=0?res:(1/res);
}
};
相关文章推荐
- 数值的整数次方(不考虑结果的大数问题)优秀的代码就是要注意细微的细节
- 《剑指offer》面试题16:数值的整数次方
- 剑指offer 数值的整数次方
- 【追求进步】数值的整数次方
- 题目1514:数值的整数次方
- 数值的整数次方 【微软面试100题 第七十一题】
- 面试题(十六)数值的整数次方
- 剑指offer系列源码-数值的整数次方
- 剑指offer 数值的整数次方
- 面试题11:数值的整数次方
- 11:数值的整数次方
- 剑指offer 面试题(数值的整数次方)(5)
- 数值的整数次方
- 【java】BigDecimal、BigInteger、大数相乘、数值的整数次方、快速乘法
- 数值的整数次方
- 【算法】求数值的整数次方
- 算法题/数值的整数次方
- 剑指offer-12.数值的整数次方
- 11 数值的整数次方
- 每日一题(65) - 数值的整数次方