题目描述
有一些数的素因子只有3、5、7,请设计一个算法,找出其中的第k个数。
输入
给定一个正整数k,保证k小于等于100。
输出
输出第k个数。
样例输入 Copy
1 3 4 5
样例输出 Copy
3 7 9 15
根据题意可知,第k个数均是3^a*5^b*7^c的形式
#include <iostream>
#include <iterator>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <string>
#include <cstring>
#include <vector>
#include <queue>
#include <stack>
#include <list>
#include <set>
#include <map>
using namespace std;
int k, dp[101];
int main()
{
while(cin >> k)
{
int num3 = 0, num5 = 0, num7 = 0;
dp[0] = 3;
dp[1] = 5;
dp[2] = 7;
for(int i = 3;i < k;i ++ )
{
dp[i] = min(dp[num3] * 3, min(dp[num5] * 5, dp[num7] * 7));
if(dp[i] == dp[num3] * 3)
num3 ++;
if(dp[i] == dp[num5] * 5)
num5 ++;
if(dp[i] == dp[num7] * 7)
num7 ++;
}
cout << dp[k - 1] << endl;
}
return 0;
}