题目:

丑数是指不能被2,3,5以外的其他素数整除的数。把丑数从小到大排列起来,结果如下:1,2,3,4,5,6,8,9,10,12,…求第1500个丑数

分析与解答:

0.对于任意丑数x:2x,3x,5x也是丑数
1.用优先队列从小到大保存已生成的丑数(2x,3x,5x)//优先队列中最多存三个数
2.利用set存所有的每次生成的丑数,如果以前出现过则跳过,不存到优先队列和set里
3.每次找x从优先队列队首找,保证x是最小的,找出来后就删掉x,优先队列存(2x,3x,5x)
4.找到第1500个的时候,由于set的去重判断,和优先队列的从小到大的顺序,现在出列的一定是第1500个丑数
5.优先队列的优先级:

先出队列的元素不是先进队列的元素,而是队列中优先级最高的元素
priority_queue< int> pq
pq.top()是最大的数

priority_queue< int,vector < int >,greater < int > > pq
pq.top()是最小的数

priority_queue< int,vector < int >,cmp > pq

struct  cmp{bool operator()(const int a,const int b) const{return a%10>b%10;}
}

自定义优先级:个位数大的整数优先级反而小
pq.top():个位数小的
因为类似于sort,cmp排序’>’,大各位数放到后面,小的在前面优先级高

6.代码:
#include<iostream>
#include<vector>
#include<queue>
#include<set>
#include<functional>
using namespace std;typedef long long LL;
const int coeff[3] = { 2, 3, 5 };
int main()
{priority_queue<LL, vector<LL>, greater<LL> >pq;set<LL> s;pq.push(1);s.insert(1);for (int i = 1;; i++){LL x = pq.top();pq.pop();if (i == 1500){cout << "The 1500th ugly number is" << x << endl;break;}for (int j = 0; j < 3; j++){LL x2 = x*coeff[j];if (!s.count(x2)){s.insert(x2);pq.push(x2);}}}return 0;
}

(STL,set,priority_queue)丑数相关推荐

  1. 【codevs1246】丑数,STL与取模大质数的好处

    丑数 USACO 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 对于一给定的素数集合 S = {p1, p2, -, ...

  2. Leetcode 313. 超级丑数 解题思路及C++实现

    解题思路: 与Leetcode 264. 丑数 II的解题思路一样,均使用最小堆来存储丑数,第i次更新最小堆时,得到第i大的丑数. 可结合Leetcode 264. 丑数 II的解题思路理解:http ...

  3. Leetcode 264. 丑数 II 解题思路及C++实现

    方法一:暴力解法 解题思路: 直接从整数1开始,不断递增,判断该数字是否为丑数(专门写一个判断是否为丑数的函数),当遇到一个丑数,则计数值加1,直至遇到n个丑数为止. 当n很大时,这种暴力解法会遇到 ...

  4. LeetCode 264. 丑数 II

    264. 丑数 II Ideas 竟然没想到用小根堆,白学了,再把小根堆抄一遍. Code Python class Solution:def nthUglyNumber(self, n: int) ...

  5. 面试题之丑数的C++实现求解(孤陋寡闻了,才知道丑数这么high的东东)

    问题描述: 我们把只包含因子2.3和5的数称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因为它包含因子7.习惯上我们把1当做是第一个丑数.求按从小到大的顺序的第1500个丑数.( ...

  6. 62. 丑数(剑指Offer经典题)

    文章目录 62. 丑数 AcWing网站原题通道 62. 丑数 分析: 从小到大生成各个丑数,最小的丑数是1,对于任意丑数x,2x.3x.5x都是丑数.这样,就可以用一个优先队列来存储丑数,每次取出最 ...

  7. Day28 49. 丑数

    49. 丑数 文章目录 [49. 丑数](https://leetcode-cn.com/problems/chou-shu-lcof/) 解题思路 我们把只包含质因子 2.3 和 5 的数称作丑数( ...

  8. 丑数 uva-136 丑数

    代码如下: /*丑数是指不能被2.3.5以外的其他素数整除的数,把丑数从小到大排列起来,结果如下: 1,2,3,4,5,6,8,9,10,12,15... 求出第1500个丑数. */ #includ ...

  9. usaco ★Humble Numbers 丑数

    ★Humble Numbers 丑数 对于一给定的素数集合 S = {p1, p2, ..., pK}, 来考虑那些质因数全部属于 S 的数的集合.这个集合包括,p1, p1p2, p1p1, 和 p ...

最新文章

  1. 好用的Span(富文本)api
  2. 面试官 100% 会严刑拷打的 CMS 垃圾回收器,下次面试就拿这篇文章怼回去!
  3. chrome浏览器中遇到bug【Error in event handler: TypeError: Cannot read property 'name' of undefined】
  4. android string拼接字符串_为什么阿里巴巴不建议在循环体中使用+进行字符串拼接?...
  5. C#下载文件(可显示进度)的方法实现
  6. 做最酷的Windows Phone应用
  7. 我的世界服务器修改数据,我的世界常用指令大全,轻松调整服务器数值状态
  8. Hi3559av100安装linux,海思hi3559AV100开发板参数规格介绍
  9. html5中的h1,HTML5语义 - 产品列表中的h1用法
  10. 云原生技术的挑战是什么?
  11. 4种方案,帮你解决Maven创建项目过慢问题
  12. python roberts滤波_Python 图像处理 OpenCV (12): Roberts 算子、 Prewitt 算子、 Sobel 算子和 Laplacian 算子边缘检测技术...
  13. 万能平板刷机软件_万能手机刷机软件下载
  14. 下钻图生成 highcharts-column-drilldown
  15. 奥城大学计算机专业,美国提供研究生双录取的大学
  16. UE4 RTXGI插件安装及使用
  17. 眼底病php 是什么病,眼底病_眼底病有哪些_眼底病怎么治疗_快速问医生
  18. centos7 Kafka安装
  19. HTTPResponse
  20. android桌面布局保存在哪里,android-DatePickerDialog保存屏幕上的布局旋转

热门文章

  1. java process exe.exec 执行exe程序
  2. python深度神经网络算法_02.深度神经网络算法之Python基础与数据分析
  3. 自动提示_EXCEL2013版突然打不开,自动修复提示1907错误
  4. python采用面向对象编程模式吗_如何理解 Python 中的面向对象编程?
  5. uboot下nand flash读写方法_鸿蒙HarmonyOS烧录方法总结
  6. 如何在Win11上快速加密硬盘 Win11上快速加密硬盘方法步骤
  7. Win11系统调节屏幕亮度的方法
  8. Win7旗舰版打不开任务管理器怎么办
  9. 2345天气王怎么查看历史天气 2345天气王如何查看历史天气
  10. 怎么修改腾讯视频的昵称