x power to y

题目描述

x ** y

解题方法

if y % 2 == 0: (x y/2) 2 else: (x y/2) 2 * x

Solution

def power(x, y):
    result = 1.0
    power = y
    if y < 0:
        power = -power
        x = 1.0 / x

    while power:
        if (power & 1) != 0:
            result *= x
        x *= x
        power >>>= 1
    return result

def powr(x, y):
    result = 1.0
    power = y
    if y < 0:
        power = -power
        x = 1.0 / x

    if (y & 1) != 0:
        return (power(x, y/2) ** 2) * x
    else:
        return power(x, y/2) ** 2

Reference