第k个数

题目描述

有一些数的素因子只有3、5、7,请设计一个算法,找出其中的第k个数。

给定一个数int k,请返回第k个数。保证k小于等于100。

测试样例:
3
返回:7
class KthNumber {
public:
    int findKth(int k) {
        // write code here
        if(k > 100)
            return -1;
        
        vector<int> tmp(k+1);
        tmp[0] = 1;
        int t3 = 0,t5 = 0,t7 = 0;
        for(int i = 1;i < k+1;i++){
            tmp[i] = min(tmp[t3]*3,tmp[t5]*5,tmp[t7]*7);
            if(tmp[i] == tmp[t3]*3) t3++;
            if(tmp[i] == tmp[t5]*5) t5++;
            if(tmp[i] == tmp[t7]*7) t7++;
        }
        return tmp[k];       
    }
    
    int min(int a,int b,int c){
        int tmp=(b > c ? c : b );
        return a > tmp ? tmp : a;
    }
};

 

posted on 2017-04-20 04:41  123_123  阅读(147)  评论(0编辑  收藏  举报