Status | In/Out | TIME Limit | MEMORY Limit | Submit Times | Solved Users | JUDGE TYPE |
---|---|---|---|---|---|---|
stdin/stdout | 3s | 8192K | 1038 | 322 | Standard |
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>.
This problem is used for contest: 112
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int i;
double x,ugly[1501];
vector<double> heap(1);
heap[0]=-1;
for(i=1;i<=1500;i++)
{
x=heap[0],ugly[i]=-x;
pop_heap(heap.begin(),heap.end());
heap.pop_back();
if(find(heap.begin(),heap.end(),x*2)==heap.end())
{
heap.push_back(x*2);
push_heap(heap.begin(),heap.end());
}
if(find(heap.begin(),heap.end(),x*3)==heap.end())
{
heap.push_back(x*3);
push_heap(heap.begin(),heap.end());
}
if(find(heap.begin(),heap.end(),x*5)==heap.end())
{
heap.push_back(x*5);
push_heap(heap.begin(),heap.end()) ;
}
}
printf("The 1500'th ugly number is %.0lf./n",ugly[1500]) ;
return 0 ;
}