Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Pow(x, n) ใน Python


สมมติว่าเรามีอินพุต x และ n สองตัว x คือตัวเลขในช่วง -100.0 ถึง 100.0 และ n คือจำนวนเต็มที่ลงนามแบบ 32 บิต เราต้องหา x ยกกำลัง n โดยไม่ใช้ฟังก์ชันไลบรารี

ดังนั้นหากอินพุตที่กำหนดคือ x =12.1, n =-2 เอาต์พุตจะเป็น 0.00683

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • อำนาจ :=|n| และ res :=1.0
  • ในขณะที่กำลังไม่ใช่ 0
    • ถ้าบิตสุดท้ายของกำลังเป็น 1 ดังนั้น res :=res * x
    • x :=x * x
  • ถ้า n <0
    • คืน 1 / res
  • ผลตอบแทน

ตัวอย่าง(Python)

ให้เราดูการใช้งานต่อไปนี้เพื่อทำความเข้าใจ −

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))

อินพุต

45
-2
21
3

ผลลัพธ์

0.0004938271604938272
9261.0