题解 | #数值的整数次方#
数值的整数次方
http://www.nowcoder.com/practice/1a834e5e3e1a4b7ba251417554e07c00
已经有不少同学给出了题解,我在这里主要探讨几个符号的使用: ①对于&,这是按位与操作,本题中if y & 1这个条件,其实就是看y的最后一位是不是1,如果是1,则结果为true,就代表y是奇数;如果最后一位是0,则结果是false,就代表y是偶数! 对于偶数,我们只需要让基数x叠加即可,对于奇数,由于在执行y = y >> 1时,会在除2的基础上减一,因此要在判断为奇数后乘x
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param base double浮点型
# @param exponent int整型
# @return double浮点型
#
class Solution:
#快速幂
def Pow(self, x: float, y: int) -> float:
res = 1
while y:
# 判断是不是奇数,可以再往上乘一个
if y & 1: # y的最后1位是0,结果就是false,最后一位是1,结果为true
res *= x
#x叠加
x *= x
#减少乘次数,如果是奇数右移,会在除2的基础上减一,偶数就是直接除2
y = y >> 1
return res
def Power(self , base: float, exponent: int) -> float:
#处理负数次方
a = 7 # 1111,右移两位,为11
print(a>>1)
if exponent < 0:
base = 1 / base
exponent = -exponent
res = 1.0
return self.Pow(base, exponent)