Implement pow(x, n).
Example 1:
Input: 2.00000, 10
Output: 1024.00000
Example 2:
Input: 2.10000, 3
Output: 9.26100
快速幂直接搞,注意边界。
class Solution {
public:
double pow(double a, long long n) {
double tmp = 1.0;
if (a == 1) return 1;
if (n == 0) return 1;
if (n == 1) return a;
else {
if (n % 2 == 1) {
tmp = pow(a, (n-1)/2);
return tmp * a * tmp;
} else {
tmp = pow(a, n/2);
return tmp*tmp;
}
}
}
double Pow(double a, long long n){
double ans = 1.0;
while(n) {
if (n%2 == 1) {
ans *= a;
}
a *= a;
n >>= 1;
}
return ans;
}
double myPow(double x, int n) {
if (n < 0) {
long long k = n;
return 1.0/pow(x, -k);
}
return pow(x, n);
}
};