# LeetCode Super Ugly Number

LeetCode Super Ugly Number

Write a program to find the nth super ugly number.

Super ugly numbers are positive numbers whose all prime factors are in the given prime list `primes` of size `k`. For example, `[1, 2, 4, 7, 8, 13, 14, 16, 19, 26, 28, 32] `is the sequence of the first 12 super ugly numbers given `primes` = `[2, 7, 13, 19]` of size 4.

Note:
(1) `1` is a super ugly number for any given `primes`.
(2) The given numbers in `primes` are in ascending order.
(3) 0 < `k` ≤ 100, 0 < `n` ≤ 106, 0 < `primes[i]` < 1000.

```class Solution {
public:
int nthSuperUglyNumber(int n, vector<int>& primes) {
if (n == 1)return 1;
vector<int> ugly_nums = { 1 };
vector<int> idx(primes.size(), 0);
int next_ugly_num = 0;
while (ugly_nums.size() < n) {
next_ugly_num = INT_MAX;
for (int i = 0; i < primes.size(); i++) {
next_ugly_num = min(next_ugly_num, primes[i] * ugly_nums[idx[i]]);
}
for (int i = 0; i < primes.size(); i++) {
if (next_ugly_num == primes[i] * ugly_nums[idx[i]]) {
idx[i]++;
}
}
ugly_nums.push_back(next_ugly_num);
}
return next_ugly_num;
}
};
```