Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬의 Pow(x, n)


두 개의 입력 x와 n이 있다고 가정합니다. x는 -100.0에서 100.0 사이의 숫자이고 n은 32비트 부호 있는 정수입니다. 라이브러리 함수를 사용하지 않고 x의 n승을 구해야 합니다.

따라서 주어진 입력이 x =12.1, n =-2이면 출력은 0.00683

이 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다.

  • 전력 :=|n| 및 해상도 :=1.0
  • 전력이 0이 아닌 동안
    • 마지막 전력 비트가 1이면 res :=res * x
    • x :=x * x
  • n <0
      인 경우
    • 1 / res를 반환
  • 반환 결과

예제(파이썬)

더 나은 이해를 위해 다음 구현을 살펴보겠습니다. −

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