Problem D: 丑数
Time Limit: 1 Sec Memory Limit: 128 MB
Description
所谓丑数,就是那些因子只含2,3,5,7的数。1是第1个丑数。
Input
输入n(n<6000)
Output
输出第n个丑数
Sample Input
100
Sample Output
450
这是一道打表题可以用优先队列水过去
AC code:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<stack>
#include<queue>
#include<vector>
#include<list>
#include<map>
#include<set>
#include<cmath>
using namespace std;
priority_queue<long long int,vector<long long int>,greater<long long int> > q;
int main(){
q.push(1);
long long int now;
int cnt=1,n;
cin>>n;
while(cnt<n){
cnt++;
now=q.top();
q.pop();
q.push(now*2);
q.push(now*3);
q.push(now*5);
q.push(now*7);
while(q.top()==now){
q.pop();
}
}
cout<<q.top();
return 0;//还没开始就结束了
}