Math Fundamentals18 sections · 814 units
Open in Course

Ugly Number III - Pseudocode

Implementation

function nthUglyNumber(n, a, b, c):

lab = lcm(a, b), lac = lcm(a, c), lbc = lcm(b, c)

labc = lcm(lab, c)

left, right = 1, 2 × 10^9

while left < right:

    mid = (left + right) // 2

    count = mid/a + mid/b + mid/c - mid/lab - mid/lac - mid/lbc + mid/labc

    if count < n: left = mid + 1

    else: right = mid

return left

Time: O(log(max answer)). Space: O(1).