题目描述:
有些数的素因子只有 3,5,7,请设计一个算法找出第 k 个数。注意,不是必须有这些素因子,而是必须不包含其他的素因子。例如,前几个数按顺序应该是 1,3,5,7,9,15,21。
示例 1:
输入: k = 5
输出: 9
思路:
找规律:首先确定一个数1,然后分别给它乘以3,5,7,保存起来
然后循环,对上面的数再分别乘以3,5,7,重复的数除外
最后输出第k个
代码如下:
class Solution {
public:
int getKthMagicNumber(int k) {
vector<int>res;
res.push_back(1);
int a=0,b=0,c=0;
for(int i=1;i<k;i++){
res.push_back(min(res[a]*3,min(res[b]*5,res[c]*7)));
if(res[i]==res[a]*3){
a++;
}
if(res[i]==res[b]*5){
b++;
}
if(res[i]==res[c]*7){
c++;
}
}
return res[k-1];
}
};