Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- '''
- Binary Exponentiation:
- eg x=2 , y=10
- we can also write it as : x=4 ie. base*base 2*2 and exponent=y/2 ie. 5 ie. overall 4^5
- we can also write it as : 4^5=4*(4^4)
- we can also write it as : 4*(4^4)=4*(16^2)
- we can also write it as : 4*256^1 {256 =16*16}
- Algo:
- Base and exponent
- if exponent is divisible by 2 then multiply base with base eg base*base
- if exponent is not divisible by 2 then multiply base in some variable eg. ans
- for example ans=1,base=5 and exponent=3 so answer is 125 then ans=1*5,base=5 and
- exponent=2(ie. exponent-1) so answer is 1*5*(5^2) =125
- if exponent>0 ans=x^exponent
- if exponenet<0 ans=1/(x^exponent)
- so we need to store absolute value of exponenet.
- '''
- class Solution:
- def myPow(self, x: float, n: int) -> float:
- if n==0:
- return 1
- ans=1
- sign=1
- base=x
- if n<0:
- sign=-1
- n=abs(n)
- while n>1:
- if n%2==0:
- base=base*base
- n//=2
- else:
- ans=ans*base
- n-=1
- return ans*base if sign==1 else 1/(ans*base)
Advertisement
Add Comment
Please, Sign In to add comment