Giả sử chúng ta có hai đầu vào x và n. x là một số trong phạm vi -100.0 đến 100.0 và n là một số nguyên có dấu 32 bit. Chúng ta phải tìm x để lũy thừa n mà không cần sử dụng các hàm thư viện.
Vì vậy, nếu các đầu vào đã cho là x =12,1, n =-2, thì đầu ra sẽ là 0,00683
Để giải quyết vấn đề này, chúng ta sẽ làm theo các bước sau -
- power:=| n | và res:=1.0
- trong khi quyền lực không phải là 0
- nếu bit công suất cuối cùng là 1, thì res:=res * x
- x:=x * x
- nếu n <0
- trả về 1 / res
- trả lại res
Ví dụ (Python)
Hãy cùng chúng tôi xem cách 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