Implemente la función double Power (base doble, exponente int), encuentre la potencia exponente de la base. No use las funciones de la biblioteca, y no necesita considerar grandes números.
Ejemplo 1:
Entrada: 2.00000, 10
Salida: 1024.00000
Ejemplo 2
Entrada: 2.10000, 3
Salida: 9.26100
Ejemplo 3
Entrada: 2.00000, -2
Salida: 0.25000
Explicación: 2-2 = 1/22 = 1/4 = 0.25
Explicación
-100.0 <x <100.0
n es un entero con signo de 32 bits con un rango de valores de [−2 ^ 31, 2 ^ 31 - 1].
Fuente: LeetCode
Enlace: https://leetcode-cn.com/problems/shu-zhi-de-zheng-shu-ci-fang-lcof Los
derechos de autor pertenecen a la red de deducción. Comuníquese con la autorización oficial para la reimpresión comercial e indique la fuente de la reimpresión no comercial.
Idea 1: potencia rápida
Convierta el exponente a binario para el análisis. Solo se requiere 1 para el cálculo.
La primera forma de escribir:
class Solution:
def myPow(self, x: float, n: int) -> float:
f = 1
if n < 0:
n = -n
f = 0
base = x
ans = 1
while n:
if n & 1:
ans *= base
base *= base
n //= 2
if f == 0:
ans = 1/ans
return ans
La segunda forma de escribir:
class Solution:
def myPow(self, x: float, n: int) -> float:
if x == 0:
return 0
if n < 0:
x, n = 1/x, -n
ans = 1
while n:
if n & 1:
ans *= x
x *= x
n >>= 1
return ans