程序员面试金典--第k个数
题目描述
有一些数的素因子只有3、5、7,请设计一个算法,找出其中的第k个数。
给定一个数int k,请返回第k个数。保证k小于等于100。
测试样例:3
返回:7
逐个增加,直到找到第k个数。
class KthNumber {
public:
int findKth(int k) {
// write code here
vector<int> vt{3, 5, 7};
int pt3 = 0, pt5 = 0, pt7 = 0;
for(int i=4; i<=k; ++i){
int val = min(3*vt[pt3], min(5*vt[pt5], 7*vt[pt7]));
if(val == 3*vt[pt3]){ pt3++; }
if(val == 5*vt[pt5]){ pt5++; }
if(val == 7*vt[pt7]){ pt7++; }
vt.push_back(val);
}
return vt[k-1];
}
};