码迷,mamicode.com
首页 > 其他好文 > 详细

poj 1338 Ugly Numbers

时间:2016-07-31 17:28:09      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:

d第一个丑数是1,1*2,1*3,1*5最小的数字是2,则第二个丑数是2,然后1*3,2*2,1*5最小的是3,第三个丑数就是3,然后2*3,2*2,1*5最小的数字是4,所以第四个丑数就是4,当每次找到一个丑数后,就记录当前丑数的下标和之前那两个没选中的数字的下标,根据这三个数字来依次往后更新丑数

 1 #include <iostream>
 2 #include <algorithm>
 3 using namespace std;
 4 int result[1501];
 5 
 6 void init()
 7 {
 8     int p1 = 1, p2 = 1, p3 = 1;
 9     result[1] = 1;
10     for(int i = 2; i <= 1500; ++i)
11     {
12         result[i] = min(result[p1]*2,min(result[p2]*3,result[p3]*5));
13 
14         if(result[i] == result[p1]*2) ++p1;
15         if(result[i] == result[p2]*3) ++p2;
16         if(result[i] == result[p3]*5) ++p3;
17     }
18 }
19 
20 int main()
21 {
22     int n;
23     init();
24     while(cin >> n && n)
25         cout << result[n] << endl;
26     return 0;
27 }
 1 #include <iostream>
 2 #include <algorithm>
 3 using namespace std;
 4 int result[1501];
 5 
 6 void init()
 7 {
 8     int p1 = 1, p2 = 1, p3 = 1;
 9     result[1] = 1;
10     for(int i = 2; i <= 1500; ++i)
11     {
12         result[i] = min(result[p1]*2,min(result[p2]*3,result[p3]*5));
13 
14         if(result[i] == result[p1]*2) ++p1;
15         if(result[i] == result[p2]*3) ++p2;
16         if(result[i] == result[p3]*5) ++p3;
17     }
18 }
19 
20 int main()
21 {
22     int n;
23     init();
24     while(cin >> n && n)
25         cout << result[n] << endl;
26     return 0;
27 }

 

poj 1338 Ugly Numbers

标签:

原文地址:http://www.cnblogs.com/guoyongheng/p/5723299.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!