# Topic description

https://leetcode-cn.com/problems/shu-zhi-de-zheng-shu-ci-fang-lcof/

## Thought analysis

• I just finished reading the question, I thought this question was not difficult, so I fell directly into the pit of the question
But the above way of writing is not comprehensive for the data. What if the exponent is 0 or a negative number? The above code only considers the case where the exponent is greater than 0

• If the exponent is negative, we can take an absolute value and return the inverse, then0How to do it? right0It is meaningless to take the reciprocal, and the base is0, but the index is negative, if no processing is done at this time, the program will report an error

• Here we introduce afast powerThe concept of (from Lc problem solution)

• Professional Edition

• simple to understand

• why uselonglong, if when n is negative infinity, it will exceed the range of int

### Code

```class Solution {
public:
double myPow(double x, int n)
{
typedef long long LL;
bool is_minus = n < 0;
double res = 1;
for (LL k = abs(LL(n)); k; k >>= 1)
{
if (k & 1) res *= x;
x *= x;
}
if (is_minus) res = 1 / res;
return res;
}
};```