Giả sử chúng ta có hai đầu vào x và n. x là số trong khoảng -100.0 đến 100.0, và n là số nguyên 32-bit có dấu. Chúng ta phải tìm x mũ n không sử dụng hàm thư viện.
Ví dụ, nếu đầu vào là x = 12.1, n = -2, đầu ra sẽ là 0.00683.
Để giải quyết, chúng ta làm theo các bước sau:
power := |n|vàres := 1.0.- Khi
powerkhác 0:- Nếu bit cuối của
powerlà 1, thìres := res * x. x := x * x.
- Nếu bit cuối của
- Nếu
n < 0:- Trả về
1 / res.
- Trả về
- Trả về
res.
Ví dụ (Python)
Xem triển khai sau để hiểu rõ hơn:
class Solution(object):
def myPow(self, x, n):
power = abs(n)
res = 1.0
while power:
if power & 1:
res *= x
x *= x
power >>= 1
if n < 0:
return 1 / res
return res
ob1 = Solution()
print(ob1.myPow(45, -2))
print(ob1.myPow(21, 3))
Đầu vào
45 -2 21 3
Đầu ra
0.0004938271604938272 9261.0