136 - Ugly Numbers

来源:互联网 发布:任玩堂 知乎 编辑:程序博客网 时间:2024/06/05 03:02
//输出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;}
0 0