https://leetcode.com/problems/super-ugly-number/description/
剑指offer的ugly number,扩展成k个素数就是这个题了
class Solution {
public:
int nthSuperUglyNumber(int n, vector<int>& primes) {
if (n <= 1 ) return 1;
sort(primes.begin(), primes.end());
vector<int> ptrs(primes.size(), 0);
vector<int> nums;
nums.push_back(1);
int last = 1, cur;
for (int i = 1; i < n; i++) {
cur = nums[ptrs[0]] * primes[0] ;
int pos = 0 ;
for (int j = 1; j < ptrs.size(); j++) {
if ( nums[ptrs[j]] * primes[j] < cur ) {
cur = nums[ptrs[j]] * primes[j];
pos = j;
}
// cur = min( nums[ptrs[j]] * primes[j] , cur);
}
nums.push_back(cur);
ptrs[pos]++;
for (int j = 0; j < ptrs.size(); j++) {
while (nums[ptrs[j]] * primes[j] <= cur) ptrs[j] ++;
}
}
return nums.back();
}
};