두 개의 입력 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