zoukankan      html  css  js  c++  java
  • Uva 136-丑数 ugly number

    题目描述:

    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>.

    分析:

    本题难点不多,直接使用队列完成。

    优先队列priority_queque的详细用法,请戳(http://www.cnblogs.com/void/archive/2012/02/01/2335224.html

    代码:

     1 #include<iostream>
     2 #include<set>
     3 #include<queue>
     4 #include<vector>
     5 using namespace std;
     6 typedef long long ll;
     7 const int basic[3]={2,3,5};
     8 int main()
     9 {
    10     priority_queue<ll,vector<ll>,greater<ll> >pq;
    11     set<ll>q;
    12     q.insert(1);
    13     pq.push(1);
    14     for(int i=1;;i++)
    15     {
    16         ll x=pq.top();
    17         pq.pop();
    18         if(i==1500)
    19         {
    20             cout<<"The 1500'th ugly number is "<<x<<".
    ";
    21             break;
    22         }
    23         for(int j=0;j<3;j++)
    24         {
    25             ll x2=basic[j]*x;
    26             if(!q.count(x2))
    27             {
    28                 q.insert(x2);
    29                 pq.push(x2);
    30             }
    31         }    
    32     }
    33     return 0;
    34  } 
  • 相关阅读:
    一些动规题
    洛谷P1717 钓鱼
    一堆递推题
    义冢oj P5033打气球
    义冢oj P5032生理周期
    Proud Merchants HDU
    739B
    Lost Cows POJ
    并查集负值根表集合大小的写法
    [Poi2011]Tree Rotations线段树合并
  • 原文地址:https://www.cnblogs.com/masking-timeflows/p/6670634.html
Copyright © 2011-2022 走看看