Uva 136 Ugly Numbers(优先队列,广搜)

题目链接:https://vjudge.net/problem/UVA-136

第一次知道不加换行符也能wa...

题意

丑数是素因子只有 2、3、5 的数,输出第 1500 个丑数。

思路

按照定义从 1 开始构造即可。

代码

#include <bits/stdc++.h>
using LL = long long;
using namespace std;
priority_queue <LL, vector<LL>, greater<LL>> que;
set<LL> st;
int main() {
    que.push(1);
    st.insert(1);
    for (int i = 1; i <= 1500; i++) {
        LL x = que.top();
        que.pop();
        for (LL i : {2, 3, 5}) {
            LL t = i * x;
            if (st.count(t) == 0) {
                que.push(t);
                st.insert(t);
            }
        }    
        if (i == 1500) cout << "The 1500'th ugly number is " << x << ".\n";
    }
}

 

posted @ 2020-04-22 17:19  Kanoon  阅读(104)  评论(0编辑  收藏  举报