imashutosh51

Binary Exponentiation or Pow(x,y)

Oct 18th, 2022 (edited)
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.13 KB | None | 0 0
  1. '''
  2. Binary Exponentiation:
  3. eg x=2 , y=10
  4. we can also write it as : x=4 ie. base*base 2*2 and exponent=y/2 ie. 5 ie. overall 4^5
  5. we can also write it as : 4^5=4*(4^4)
  6. we can also write it as : 4*(4^4)=4*(16^2)
  7. we can also write it as : 4*256^1   {256 =16*16}
  8.  
  9. Algo:
  10. Base and exponent
  11. if exponent is divisible by 2 then multiply base with base eg base*base
  12. if exponent is not divisible by 2 then multiply base in some variable eg. ans
  13. for example ans=1,base=5 and exponent=3 so answer is 125 then  ans=1*5,base=5 and
  14. exponent=2(ie. exponent-1) so answer is 1*5*(5^2) =125
  15.  
  16. if exponent>0 ans=x^exponent
  17. if exponenet<0 ans=1/(x^exponent)
  18. so we need to store absolute value of exponenet.
  19. '''
  20. class Solution:
  21.     def myPow(self, x: float, n: int) -> float:
  22.         if n==0:
  23.             return 1
  24.         ans=1
  25.         sign=1
  26.         base=x
  27.         if n<0:
  28.             sign=-1
  29.             n=abs(n)
  30.         while n>1:
  31.             if n%2==0:
  32.                 base=base*base
  33.                 n//=2
  34.             else:
  35.                 ans=ans*base
  36.                 n-=1
  37.         return ans*base if sign==1 else 1/(ans*base)
  38.  
  39.  
  40.  
  41.        
Advertisement
Add Comment
Please, Sign In to add comment