Ugly Numbers

来源:互联网 发布:真正能借到钱的软件 编辑:程序博客网 时间:2024/05/27 20:21

Ugly Numbers

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
There is no input to this program.

Output
Output should consist of a single line as shown below, with ‘’ replaced by the number computed.

Sample Output
The 1500’th ugly number is .

#include <iostream>#include <queue>#include <vector>#include <set>#include <stdio.h>typedef long long LL;int sam[3] = {2, 3, 5};using namespace std;int main(){    priority_queue< LL, vector<LL>, greater<LL> > ugly_numbers;    set<LL> numbers;    numbers.insert(1);    ugly_numbers.push(1);    for(int i = 1; ; i++){        LL x = ugly_numbers.top();        if(i == 1500)        {            cout <<  "The 1500'th ugly number is " << x << "." << endl;            break;        }        ugly_numbers.pop();        for(int j=0; j<3; j++){            if(numbers.count(sam[j]*x) == 1)                continue;            else{                numbers.insert(sam[j]*x);                ugly_numbers.push(sam[j]*x);            }        }    }    return 0;}
原创粉丝点击