数值的整数次方

数值的整数次方

http://www.nowcoder.com/questionTerminal/1a834e5e3e1a4b7ba251417554e07c00

调参划水

# -*- coding:utf-8 -*-
class Solution:
    def Power(self, base, exponent):
        # write code here
        return pow(base,exponent)

累积相乘

显然,我们可以一个一个相乘,但是这个题的关键在于,每个数都是一样的,也就是说,1号和2号的乘积等于3号和4号的乘积
换言之,乘积可以复用,大大减少计算量

# -*- coding:utf-8 -*-
class Solution:
    def Power(self, base, exponent):
        # write code here
        res=base
        flag=1
        if exponent<0:
            exponent*=-1
            flag=-1
        elif exponent==0:
            return 1
        while True:
            if exponent==1:
                res*=base
                break
            res*=res
            exponent=exponent//2
        return res if flag==1 else 1/res     
全部评论
老铁,你累积相乘的解法有问题,你的2的7次方输出是32,不是128,我觉得按你的思路应该是这样的 class Solution:     def Power(self, base, exponent):         if exponent < 0:             base = 1/base             exponent = -exponent         value = bin(exponent)#字符串也可以用len()函数         answer = 1         #print(value)         #注意i的取值范围,倒过来         for i in range(len(value)-1, 1, -1):             if value[i] == "1":                 answer *= base#注意是value[i],不是i                 #print("+++++++++++", answer)             base *= base         return answer
点赞 回复 分享
发布于 2019-08-08 23:31
他的这种写法计算出来的结果是错的,但是提交时可以通过的,就很迷。楼主大概是想写快速幂算法,但是又写的不完整。
点赞 回复 分享
发布于 2019-10-12 09:46

相关推荐

09-28 22:01
已编辑
广西科技大学 IT技术支持
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

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