Computer >> Máy Tính >  >> Lập trình >> Python

Pow (x, n) bằng Python


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