UVa 136 Ugly Numbers

来源:互联网 发布:薇姿适合什么年龄知乎 编辑:程序博客网 时间:2024/05/16 07:37

Description

丑数是不能被2,3,5以外其他质数整除的数。
找第1500个丑数

Algorithm

生成丑数
每次取最小的丑数x,然后将2x,3x,5x加入优先队列

Code

#include <cstdio>#include <iostream>#include <queue>#include <vector>#include <set>using namespace std;typedef long long ll;const int a[3] = {2, 3, 5};int main(){  priority_queue<ll, vector<ll>, greater<ll> > pq;  set<ll> s;  pq.push(1);  s.insert(1);  ll x;  for (int i = 1; i <= 1500; i++)  {    x = pq.top();    pq.pop();    for (int j = 0; j < 3; j++)    {      ll x2 = x * a[j];      if (!s.count(x2))      {        s.insert(x2);        pq.push(x2);      }    }  }  cout << "The 1500'th ugly number is " << x << "." << endl;}
0 0
原创粉丝点击