题意:
很简单,输出第n个丑数。
最小优先队列:
priority_queue<__int64,vector<__int64>,greater<__int64> >pq;
小的排在前边。
set是容器,可以用count(x)查找x的个数。
#include<iostream>
#include<cstdio>
#include<vector>
#include<queue>
#include<set>
#include<algorithm>
#define M 2000
__int64 a[M];
int coeff[3] = {2,3,5};
using namespace std;
int main()
{
// freopen("in.txt","r",stdin);
set<__int64>s; //
priority_queue<__int64,vector<__int64>,greater<__int64> >pq;
pq.push(1);
s.insert(1);
int i = 1;
while(i <= 1500){
__int64 x = pq.top();
a[i++] = x;
pq.pop();
for(int j = 0;j < 3; j++){
__int64 x2 = x* coeff[j];
if(!s.count(x2)){ s.insert(x2); pq.push(x2); }
}
}
__int64 n;
while(cin>>n,n){
cout<<a[n]<<endl;
}
return 0;
}