Uva136 丑数[优先队列]
2016-07-30 22:48
309 查看
题目连接
http://acm.hust.edu.cn/vjudge/problem/19437题意
找出第1500个素因子只能有2或3或5的数。题解
懵逼了吧,并不是素因子筛,用2,3,5去筛并不能得到满足丑数要求的数,例如14就筛不掉。优先队列每次取一个最小的数x,2x,3x,5x,都是丑数,但是每次要判断是否有重数(set),取1500,每次都是取出最小的数,取1500次之后就是第1500个数。代码
#include<bits/stdc++.h> int b[3]={2,3,5}; using namespace std; int main() { set<long long>s; priority_queue<long long,vector<long long>,greater<long long> >que; que.push(1); s.insert(1); int k; for(k=1;;k++) { if(k==1500){printf("The 1500'th ugly number is %lld.\n",que.top());return 0;} long long cnt=que.top(); que.pop(); for(int i=0;i<=2;i++) { long long z=cnt*(long long)b[i]; if(!s.count(z)){s.insert(z);que.push(z);} } } return 0; }
相关文章推荐
- 【日常学习】【优先队列】POJ1338 Uva136 - Ugly Numbers题解
- uva136 优先队列,或者常规做法,比较大小存入数组即可。
- UVa-136-Ugly Number STL 优先队列的基础使用
- Uva136 Ugly Numbers 【优先队列】【例题5-7】
- UVa 136 Ugly Numbers【优先队列】
- UVa - 136 - Ugly Numbers(STL - 优先队列priority_queue)
- 紫书章五例题七 丑数 UVa 136(多种方法,在这里介绍优先级队列)
- 紫书章五例题七 丑数 UVa 136(多种方法,在这里介绍优先级队列)
- 紫书章五例题七 丑数 UVa 136(多种方法,在这里介绍优先级队列)
- 紫书章五例题七 丑数 UVa 136(多种方法,在这里介绍优先级队列)
- uva 136(Ugly Numbers, 优先队列基础)
- UVA 136 - Ugly Numbers【巧用优先队列】
- 紫书章五例题七 丑数 UVa 136(多种方法,在这里介绍优先级队列)
- UVA 540 and UVA 136 队列及优先队列
- 紫书章五例题七 丑数 UVa 136(多种方法,在这里介绍优先级队列)
- 紫书章五例题七 丑数 UVa 136(多种方法,在这里介绍优先级队列)
- 紫书章五例题七 丑数 UVa 136(多种方法,在这里介绍优先级队列)
- UVa540 队列 UVa136 优先队列
- UVa 10986 Sending email / 优先队列优化dijkstra
- UVa 136 丑数