58 lines
876 B
Markdown
58 lines
876 B
Markdown
|
|
---
|
||
|
|
layout: page
|
||
|
|
title: Pow(x, n)
|
||
|
|
last_solved: 2020-07-16
|
||
|
|
category: bit manipulation
|
||
|
|
leetcode_url: https://leetcode.com/problems/powx-n/
|
||
|
|
status: Attempted
|
||
|
|
---
|
||
|
|
|
||
|
|
Problem
|
||
|
|
-------
|
||
|
|
|
||
|
|
```
|
||
|
|
Implement pow(x, n), which calculates x raised to the power n (xn).
|
||
|
|
|
||
|
|
Example 1:
|
||
|
|
|
||
|
|
Input: 2.00000, 10
|
||
|
|
Output: 1024.00000
|
||
|
|
Example 2:
|
||
|
|
|
||
|
|
Input: 2.10000, 3
|
||
|
|
Output: 9.26100
|
||
|
|
Example 3:
|
||
|
|
|
||
|
|
Input: 2.00000, -2
|
||
|
|
Output: 0.25000
|
||
|
|
Explanation: 2-2 = 1/22 = 1/4 = 0.25
|
||
|
|
|
||
|
|
```
|
||
|
|
|
||
|
|
Solution
|
||
|
|
----------
|
||
|
|
|
||
|
|
Didn't quite get it to work. Do check out [Timonthy's explanation](https://www.youtube.com/watch?v=Twr5TD8Fvbo)
|
||
|
|
|
||
|
|
|
||
|
|
{% highlight python %}
|
||
|
|
|
||
|
|
def myPow(self, x: float, n: int) -> float:
|
||
|
|
|
||
|
|
if n<0:
|
||
|
|
x = 1/x
|
||
|
|
n = n*-1
|
||
|
|
|
||
|
|
output = 1
|
||
|
|
while n>0:
|
||
|
|
if n&1:
|
||
|
|
print(n, x, output)
|
||
|
|
output *= x
|
||
|
|
n>>=1
|
||
|
|
x=x*x
|
||
|
|
return output
|
||
|
|
|
||
|
|
{% endhighlight %}
|
||
|
|
|
||
|
|
|
||
|
|
![image1]()
|