zoukankan      html  css  js  c++  java
  • 剑指offer——12数值的整数N次方

    题目描述

    给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0

    思路:

    简单版(暴力法):给定一个指数,循环和底数相乘得出结果。在该方法中,有个问题需要考虑,就是判断指数为正负的问题,当指数为负时,需要将求得的数除1即可。

    class Solution:
        def Power(self, base, exponent):
            # write code here
            if base == 0:
                return 0
            if exponent==0:
                return 1
            result = 1
            for i in range(abs(exponent)):
                result*=base
            if exponent<0:
                return 1/result
            else:
                return result
    

      

    改进版:可想而知,循环相乘做了很多无用功,比如在一个循环中需要做32次循环,我们的目标是求出该数的32次方,我们只需要求出该数的16次方再平方即可。相应的16次方可以有八次方平方得来。这样就省去了很大一部分计算。

    class Solution:
        def Power(self, base, exponent):
            # write code here
            if base - 0 > -0.0000001 and base - 0 < 0.0000001 and exponent < 0:
                return 0
            if exponent >= 0:
                return self.powWithUnsignExponent(base, exponent)
            else:
                return 1 / self.powWithUnsignExponent(base, - exponent)
    
        def powWithUnsignExponent(self, base, absExpoent):
            if absExpoent == 0:
                return 1
            elif absExpoent == 1:
                return base
            result = self.powWithUnsignExponent(base, absExpoent >> 1)
            result *= result
            if absExpoent & 0x1 == 1:
                result *= base
            return result
    

      

  • 相关阅读:
    【BZOJ 2440】[中山市选2011]完全平方数
    【BZOJ 1066】[SCOI2007]蜥蜴
    luogu P1317 低洼地
    luogu P1379 八数码难题
    luogu P1886 滑动窗口
    luogu P1032 字串变换
    题解 P1876 【开灯】
    题解 P1720 【月落乌啼算钱】
    题解 P2863 【[USACO06JAN]牛的舞会The Cow Prom】
    关于线性回归
  • 原文地址:https://www.cnblogs.com/wobushangwangl/p/11460030.html
Copyright © 2011-2022 走看看