c++
class Solution {
public:
int nthSuperUglyNumber(int n, vector<int>& primes) {
vector<int> list{1}, print(primes.size());
int ans = 1;
while (--n) {
ans = primes[0] * list[print[0]];
for (int i = 1; i < primes.size(); i++) {
ans = min(ans, primes[i] * list[print[i]]);
}
for (int i = 0; i < primes.size(); i++) {
if (ans == primes[i] * list[print[i]]) {
print[i]++;
}
}
list.push_back(ans);
}
return ans;
}
};
js
var nthSuperUglyNumber = function(n, primes) {
var list = [1], p = new Array(primes.length).fill(0), ans = 1;
while (--n) {
ans = primes[0] * list[p[0]];
for (var i = 1; i < primes.length; i++) {
ans = Math.min(ans, primes[i] * list[p[i]]);
}
for (var i = 0; i < primes.length; i++) {
if (ans == primes[i] * list[p[i]]) p[i]++;
}
list.push(ans);
}
return ans;
};