Advertisement
serega1112

878

Dec 12th, 2020
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.64 KB | None | 0 0
  1. class Solution:
  2.     def nthMagicalNumber(self, N: int, A: int, B: int) -> int:
  3.        
  4.         minAB, maxAB = min(A, B), max(A, B)
  5.         while maxAB and minAB:
  6.             rem = maxAB % minAB
  7.             maxAB = minAB
  8.             minAB = rem        
  9.         lcm = A * B // maxAB
  10.        
  11.         l = 1
  12.         r = N * (A + B) + 1
  13.        
  14.         while r - l > 1:
  15.             mid = l + (r - l) // 2
  16.             res = mid // A + mid // B - mid // lcm
  17.             if res > N or (res == N and mid % A != 0 and mid % B != 0):
  18.                 r = mid
  19.             else:
  20.                 l = mid
  21.                
  22.         return l % (10**9 + 7)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement