# Python program to implement pow(x, n)

This is a Leetcode problem:

Implement `pow(x, n)`, which calculates `x` raised to the power `n` (\$ x^n\$ ).

Note

• -100.0 < `x` < 100.0

• `n` is a 32-bit signed integer, within the range [\$ -2^{31}\$ , \$ 2^{31}\$ − 1]

``def pow(x, n):     if n == 0:         return 1     if x == 0 and n < 0:         return     result = 1     if n > 0:         while n > 0:             pre_result = result             result *= x             if pre_result == result or pre_result == -result:                 if result >= 0:                     return result                 if n % 2 == 0:                     return -result                 else:                     return result             n -= 1         return result     else:         while n < 0:             pre_result = result             result /= x             if pre_result == result or pre_result == -result:                 if result >= 0:                     return result                 if n % 2 == 0:                     return -result                 else:                     return result             n += 1         return result ``

NOTE – My solution is $$O(n)$$.

Here are some example inputs/outputs:

``#print(pow(2.00000, 10))  >>> 1024.0  #print(pow(2.10000, 3))  >>> 9.261  #print(pow(2.00000, -2))  >>> 0.25  #print(pow(-1.00000, -2147483648))  >>> 1.0 ``

Here are the times taken for each output:

``#%timeit pow(2.00000, 10)  >>> 1.88 µs ± 14 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)  #%timeit pow(2.10000, 3)  >>> 805 ns ± 17.2 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)  #%timeit pow(2.00000, -2)  >>> 643 ns ± 9.55 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)  #%timeit pow(-1.00000, -2147483648)  >>> 594 ns ± 20 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each) ``

So, I would like to know whether I could make this program shorter and more efficient.

Any help would be highly appreciated.