LintCode 428. x 的 n 次幂

838 阅读1分钟

题意

实现 pow (x,n)

注意事项

不用担心精度,当答案和标准输出差绝对值小于 1e-3 时都算正确

样例

Pow(2.1, 3) = 9.261
Pow(0, 1) = 0
Pow(1, 0) = 1

思路

从数学上来说,(x)的4次方 等于 (x的平方)的平方。我们使用这个思想来做这道题就行了。

其实就和把十进制数转成二进制的思想是一样的。

需要注意的地方是,n 可能为负数。

代码

class Solution:
    """
    @param: x: the base number
    @param: n: the power number
    @return: the result
    """
    def myPow(self, x, n):
        if n == 0:
            return 1
        if x == 0:
            return 0
        t = x
        if n < 0:
            t = 1 / t
            n = -n
        ans = 1
        while n != 0:
            if n % 2 != 0:
                ans *= t
            t *= t
            n = int(n / 2)
        return ans