uva 136 丑数 STL

    xiaoxiao2021-03-25  109

    【UVa 136】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 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>.

    // // main.cpp // 160610 // // Created by liuzhe on 16/6/10. // Copyright © 2016年 my_code. All rights reserved. // #include <iostream> #include <algorithm> #include <cstdio> #include <cmath> #include <cstring> #include <string> #include <vector> #include <queue> #include <set> using namespace std; //uva 136 const int coeff[3]={2,3,5}; int main() { priority_queue<long long,vector<long long>,greater<long long> >pq; set<long long>s; pq.push(1); s.insert(1); for(int i=1;;i++) { long long x = pq.top(); pq.pop(); if(i==1500) { cout<<"The 1500'th ugly number is "<<x<<'.'<<endl; break; } for(int j=0;j<3;j++) { long long xx = x*coeff[j]; if(!s.count(xx)) { s.insert(xx); pq.push(xx); } } } return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-24567.html

    最新回复(0)