实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。
示例 1:
输入:x = 2.00000, n = 10
输出:1024.00000
示例 2:
输入:x = 2.10000, n = 3
输出:9.26100
示例 3:
输入:x = 2.00000, n = -2
输出:0.25000
解释:2-2 = 1/22 = 1/4 = 0.25
提示:
-100.0 < x < 100.0
-231 <= n <= 231-1
-104 <= xn <= 104
思路:快速幂 |
把n拆成二进制,然后写成20+21+22+……这种形式
带上x,就是x的20次方 × x的21次方 × x的22次方 × ……
class Solution {
public:
double myPow(double x, int n) {
typedef long long LL;
bool is=n<0;
double res=1;
for(LL k=abs(LL(n));k>0;k>>=1){
if(k&1) res*=x;
x=x*x;
}
if(is) return 1.0/res;
return res;
}
};