↓ Skip to main content
  1. Science/
  2. Computer/

0313.Super Ugly Number

Solution

from typing import List
import heapq

class Solution:
    def nthSuperUglyNumber(self, n: int, primes: List[int]) -> int:
        q = [1]
        x = 0
        mx = (1 << 31) - 1
        for _ in range(n):
            x = heapq.heappop(q)
            for k in primes:
                if x <= mx // k:
                    heapq.heappush(q, k * x)
                if x % k == 0:
                    break
        return x


if __name__ == "__main__":
    sol = Solution()
    print(sol.nthSuperUglyNumber(12, [2,7,13,19])) #32
    print(sol.nthSuperUglyNumber(1, [2,3,5])) #1