Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution:
- def nthUglyNumber(self, n: int, a: int, b: int, c: int) -> int:
- def lcm(*args):
- lcm = args[0]
- for i in range(1, len(args)):
- a = lcm
- b = args[i]
- while a % b != 0:
- a, b = b, a % b
- lcm *= args[i] // b
- return lcm
- def order(num):
- return num // a + num // b + num // c - \
- num // lcm(a, b) - num // lcm(b, c) - num // lcm (a, c) + \
- num // lcm(a, b, c)
- l = 0
- r = a * b * c * n
- while r - l > 1:
- mid = l + (r - l) // 2
- if order(mid) < n:
- l = mid
- else:
- r = mid
- return r
Add Comment
Please, Sign In to add comment