首页 > 代码库 > Uva 136-丑数 ugly number
Uva 136-丑数 ugly number
题目描述:
Ugly numbers are numbers whose only prime factors are 2, 3 or 5. The sequence
1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, ...
shows the first 11 ugly numbers. By convention, 1 is included.
Write a program to find and print the 1500‘th ugly number.
Input and Output
There is no input to this program. Output should consist of a single line as shown below, with <number> replaced by the number computed.
Sample output
The 1500‘th ugly number is <number>.
分析:
本题难点不多,直接使用队列完成。
优先队列priority_queque的详细用法,请戳(http://www.cnblogs.com/void/archive/2012/02/01/2335224.html)
代码:
1 #include<iostream> 2 #include<set> 3 #include<queue> 4 #include<vector> 5 using namespace std; 6 typedef long long ll; 7 const int basic[3]={2,3,5}; 8 int main() 9 { 10 priority_queue<ll,vector<ll>,greater<ll> >pq; 11 set<ll>q; 12 q.insert(1); 13 pq.push(1); 14 for(int i=1;;i++) 15 { 16 ll x=pq.top(); 17 pq.pop(); 18 if(i==1500) 19 { 20 cout<<"The 1500‘th ugly number is "<<x<<".\n"; 21 break; 22 } 23 for(int j=0;j<3;j++) 24 { 25 ll x2=basic[j]*x; 26 if(!q.count(x2)) 27 { 28 q.insert(x2); 29 pq.push(x2); 30 } 31 } 32 } 33 return 0; 34 }
Uva 136-丑数 ugly number
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。