题目链接:

https://cn.vjudge.net/problem/UVA-136

 /*问题
输出第1500个丑数,丑数的定义是不能被2,3,5以外的其他素数整除的数 解题思路
直接硬暴力先试一下发现枚举的时候不知道它能被那个素数整除,况且打很大的素数表依次遍历也不一定能够找到1500个丑数。
那么根据定义,如果x是一个丑数,那么2*x、3*x、5*x也一定是丑数。那么构建一个优先队列,让数值小的优先级最高,加入第一个丑数1,
依次加入三个丑数(数值小的在前面),直到第1500个丑数时结束,另外可能生成的丑数会重复,因此需要一个set集合来记录哪些数已经
出现过了。
*/
#include<cstdio>
#include<iostream>
#include<cmath>
#include<vector>
#include<set>
#include<queue>
using namespace std;
const int m[]={,,}; typedef long long LL; int main()
{
set<LL> s;
priority_queue<LL,vector<LL>,greater<LL> > pq; s.insert();
pq.push();
for(int i=;;i++){
LL x=pq.top();
pq.pop(); if(i == ){
cout<<"The 1500'th ugly number is "<<x<<'.'<<endl;
break;
}
for(int j=;j<;j++){
LL x1=x*m[j];
if(!s.count(x1)){
s.insert(x1);
pq.push(x1);
}
}
}
return ;
}

136 Ugly Numbers(priority_queue+逆向求解要求数)的更多相关文章

  1. UVA.136 Ugly Numbers (优先队列)

    UVA.136 Ugly Numbers (优先队列) 题意分析 如果一个数字是2,3,5的倍数,那么他就叫做丑数,规定1也是丑数,现在求解第1500个丑数是多少. 既然某数字2,3,5倍均是丑数,且 ...

  2. UVA - 136 Ugly Numbers(丑数,STL优先队列+set)

    Ugly numbers are numbers whose only prime factors are 2, 3 or 5. The sequence 1, 2, 3, 4, 5, 6, 8, 9 ...

  3. UVA - 136 Ugly Numbers (有关set使用的一道题)

    Ugly numbers are numbers whose only prime factors are 2, 3 or 5. The sequence1, 2, 3, 4, 5, 6, 8, 9, ...

  4. 136 - Ugly Numbers

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

  5. UVa 136 Ugly Numbers【优先队列】

    题意:给出丑数的定义,不能被除2,3,5以外的素数整除的的数称为丑数. 和杭电的那一题丑数一样--这里学的紫书上的用优先队列来做. 用已知的丑数去生成新的丑数,利用优先队列的能够每次取出当前最小的丑数 ...

  6. UVa 136 - Ugly Numbers

    题目大意:只有素因子2,3,5的数叫做丑数.输出第1500个丑数即可. 这个...好吧,直接输出就是了.自己写一个小程序先计算一下,这就是黑盒测试的好处啊,“我们的目标是解决问题,而不是为了写程序而写 ...

  7. 丑数(Ugly Numbers, UVa 136)

    丑数(Ugly Numbers, UVa 136) 题目描述 我们把只包含因子2.3和5的数称作丑数(Ugly Number).求按从小到大的顺序的第1500个丑数.例如6.8都是丑数,但14不是,因 ...

  8. Ugly Numbers UVA - 136(优先队列+vector)

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

  9. UVa136 Ugly Numbers(优先队列priority_queue)

    Ugly Numbers 题目 Ugly numbers are numbers whose only prime factors are 2, 3 or 5. The sequence 1, 2, ...

随机推荐

  1. Poj2296

    题意:给定n个点,然后在每个点在一个正方形的上边或者下边的中点,并且所有的正方形等大且不能重叠.求正方形最大的边长是多少. 思路:很明显的二分边长+判定.不过判定要用到2-sat,算是2-sat的入门 ...

  2. 10 个免费的Bootstrap Admin 主题,模板收集

    In designing websites today, one of the must have frameworks is the twitter bootstrap. To those who ...

  3. 深入探索AngularJS

    目录 深入探索AngularJS 作用域Scope是DOM和Directives交互的抽象 Scope是POJO对象 Scope是上下文 Scope继承树 Scope附加功能 正交功能 Element ...

  4. 查看指定spid的脚本当前运行情况和状态

    USE MasterGO declare @spid int; select @spid = 419--null:all ; ;WITH DATA(spid,blockRelationship,blo ...

  5. MeasureOverride和ArrangeOverride 练手项目

    public class Diagnol:Panel { /// <summary> /// 测量 /// </summary> /// <param name=&quo ...

  6. ASP.Net MVC OA项目笔记<五>

    1.1.1  抽象工厂封装数据操作类实例创建,然后DBSession调用抽象工厂,修改DBSession CZBK.ItcastOA.DALFactory数据会话层调数据层不能直接new,要封装一下解 ...

  7. Android---------------Activity的学习

    一.Activity的启动方式 1.显示启动     Intent intent=new Intent(MainActivity.this,SettingActivity.class); //还可以这 ...

  8. js中获取当前页面的url

    在js中可以通过下面的方式获取当前页面url的相关信息 var item = window.location // 返回的是对象, 这个对象里有各种关于url的信息 var url = window. ...

  9. c setjmp longjmp

    http://coolshell.cn/?s=setjmp http://www.cnblogs.com/hazir/p/c_setjmp_longjmp.html double divide(dou ...

  10. SSH 学习笔记

    零.背景 在看 pm2 的 deploy 功能的时候,对 ssh 的不熟悉导致错误频出,包括之前对 github 的配置也用到了 SSH,所以找个机会整理一下. 一.介绍 SSH 是每一台 Linux ...