//输出1 2 3 4 5 6 8 9 10 12 15
#include<stdio.h>
#include<vector>
#include<queue>
#include<set>
using namespace std;
typedef long long LL;
const int coeff[3]={2,3,5};
int main()
{
priority_queue<LL,vector<LL>,greater<LL> >pq;
//越小的数优先级越高
set<LL> s;
pq.push(1);//pq优先队列保存所有已经生成的丑数
s.insert(1);
for(int i=1;;i++)
{
LL x=pq.top();//取出最小的丑数
pq.pop();
if(i<12)
printf("%lld ",x);
else
break;
for(int j=0;j<3;j++)
{
LL x2=x*coeff[j];
if(!s.count(x2))//s.count()统计x2出现次数
{
s.insert(x2);
pq.push(x2);
}
}
}
return 0;
}
136 - Ugly Numbers
最新推荐文章于 2023-10-16 12:10:04 发布