Talentd
FleetCode

1201. Ugly Number III

Medium31.9% acceptance3 companies

An ugly number is a positive integer that is divisible by a, b, or c.

Given four integers n, a, b, and c, return the nth ugly number.

Example 1:

Input: n = 3, a = 2, b = 3, c = 5
Output: 4
Explanation: The ugly numbers are 2, 3, 4, 5, 6, 8, 9, 10... The 3rd is 4.

Example 2:

Input: n = 4, a = 2, b = 3, c = 4
Output: 6
Explanation: The ugly numbers are 2, 3, 4, 6, 8, 9, 10, 12... The 4th is 6.

Example 3:

Input: n = 5, a = 2, b = 11, c = 13
Output: 10
Explanation: The ugly numbers are 2, 4, 6, 8, 10, 11, 12, 13... The 5th is 10.

Constraints:

  • 1 <= n, a, b, c <= 109
  • 1 <= a * b * c <= 1018
  • It is guaranteed that the result will be in range [1, 2 * 109].

Asked at 3 companies

Hints open one at a time

Hint 1
Write a function f(k) to determine how many ugly numbers smaller than k. As f(k) is non-decreasing, try binary search.
Hint 2
Find all ugly numbers in [1, LCM(a, b, c)] (LCM is Least Common Multiple). Use inclusion-exclusion principle to expand the result.
5:49
Still stuck?Read 3 approaches, or watch a walkthrough.
Open solution

Similar problems

Ugly Number IIMedium
Loading editor…
1class Solution:
2 def nthUglyNumber(self, n: int, a: int, b: int, c: int) -> int:
3
Starter codePython 3Spaces: 4
Examples
Input
3
2
3
5
Input
4
2
3
4
Input
5
2
11
13
Your code is saved on this device.Solution