问题 E: 丑数(DP+去除重复数字)

问题 E: 丑数(DP+去除重复数字)_第1张图片

Input
输入包含多组测试用例。
每组测试用例包含一个整数n(1 <= n <= 5842),输入为0时,表示测试数据的结束。
Output
对于每组的n,请输出第n个丑数。
每组输出占一行。

输入样例

1
2
3
4
11
12
13
21
22
23
100
1000
5842
0
 

输出样例

1
2
3
4
12
14
15
28
30
32
450
385875
2000000000

首先,第一个丑数为“1”,
后面的每一个丑数都是由前面某个丑数乘2、3、5或7而来,

那么后一个丑数就是前面某个丑数乘这四个数得到的最小值,

(利用多个if判断,以防止多个:a丑数*2==b丑数*3==.....)

for example:

第一个:1,

第二个:1*2、1*3、1*5或1*7,显然为2,

第三个:2*2,1*3,1*5或1*7,显然是3,

第四个:2*2,,2*3,1*5,1*7为4,

第五个:3*2,2*3,1*5,1*7…… 

代码实现:

问题 E: 丑数(DP+去除重复数字)_第2张图片

你可能感兴趣的:(dp算法,算法,动态规划,c语言)