题解 | #数值的整数次方#

数值的整数次方

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)
全部评论

相关推荐

白火同学:能。我当初应届沟通了1200,收简历50,面试10左右吧,加油投吧
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务