Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution:
- def nthMagicalNumber(self, N: int, A: int, B: int) -> int:
- minAB, maxAB = min(A, B), max(A, B)
- while maxAB and minAB:
- rem = maxAB % minAB
- maxAB = minAB
- minAB = rem
- lcm = A * B // maxAB
- l = 1
- r = N * (A + B) + 1
- while r - l > 1:
- mid = l + (r - l) // 2
- res = mid // A + mid // B - mid // lcm
- if res > N or (res == N and mid % A != 0 and mid % B != 0):
- r = mid
- else:
- l = mid
- return l % (10**9 + 7)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement