UVA 136 Ugly Numbers

来源:互联网 发布:美利坚仓储淘宝王无错 编辑:程序博客网 时间:2024/05/16 07:02

Ugly numbers are numbers whose only prime factors are 2, 3 or 5. The sequence

1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, ...

shows the first 11 ugly numbers. By convention, 1 is included.

Write a program to find and print the 1500'th ugly number.

Input and Output

There is no input to this program. Output should consist of a single line as shown below, with <number> replaced by the number computed.

Sample output

The 1500'th ugly number is <number>.

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


0 0
原创粉丝点击