UVa 136 Ugly Numbers

题目描述

“丑数”(Ugly Numbers\texttt{Ugly Numbers}Ugly Numbers)是指那些质因数只包含222333555的正整数。通常约定111也算作丑数。前111111个丑数为:

1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, … 1,\ 2,\ 3,\ 4,\ 5,\ 6,\ 8,\ 9,\ 10,\ 12,\ 15,\ \dots1,2,3,4,5,6,8,9,10,12,15,

本题要求编写程序,找出并输出第150015001500个丑数。

输入格式

无输入。

输出格式

输出一行,格式为:

The 1500'th ugly number is <number>.

其中<number>应替换为计算出的第150015001500个丑数。


题目分析

我们需要生成一个序列,序列中的每个数都满足:其质因数只包含222333555。换句话说,对于任意丑数nnn,存在非负整数aaabbbccc,使得:

n=2a×3b×5c n = 2^a \times 3^b \times 5^cn=2a×3b×5c

本题的核心在于按顺序生成丑数,并找到第150015001500个。


解题思路

方法一:模拟法(朴素判断)

一种直接的方法是:从111开始逐个判断每个正整数是否为丑数,直到找到第150015001500个为止。

判断丑数的方法:

  • 将该数不断除以222333555,直到不能再被这三个数整除。
  • 若最终结果为111,则该数是丑数。

优点:实现简单,易于理解。
缺点:效率较低,因为需要检查很多非丑数。不过对于第150015001500个丑数,其值并不大(约为8.5×1058.5 \times 10^58.5×105)。

时间复杂度O(nlog⁡n)O(n \log n)O(nlogn),其中nnn是第150015001500个丑数的值。


方法二:优先队列法(高效生成)

我们可以利用最小堆(优先队列)来按顺序生成丑数:

  1. 初始化一个最小堆,将111压入堆中。
  2. 每次从堆中取出最小元素xxx,它就是当前最小的丑数。
  3. x×2x \times 2x×2x×3x \times 3x×3x×5x \times 5x×5压入堆中(若尚未出现过)。
  4. 用一个集合记录已生成的丑数,避免重复入堆。
  5. 重复上述过程,直到取出第150015001500个丑数。

优点:只生成丑数,无需判断非丑数,效率高。
缺点:需要额外的数据结构(堆和集合)。

时间复杂度O(nlog⁡n)O(n \log n)O(nlogn),其中n=1500n = 1500n=1500


代码实现

方法一代码(模拟法)

// Ugly Numbers// UVa ID: 136// Verdict: Accepted// Submission Date: 2016-01-08// UVa Run Time: 0.000s//// 版权所有(C)2016,邱秋。metaphysis # yeah dot net#include<bits/stdc++.h>usingnamespacestd;intmain(){longlongintstart=1;intcounter=1;while(counter<1500){start++;longlongintnumber=start;while(number%2==0)number/=2;while(number%3==0)number/=3;while(number%5==0)number/=5;if(number==1)counter++;}cout<<"The 1500'th ugly number is "<<start<<"."<<endl;return0;}

方法二代码(优先队列法)

// Ugly Numbers// UVa ID: 136// Verdict: Accepted// Submission Date: 2016-01-08// UVa Run Time: 0.000s//// 版权所有(C)2016,邱秋。metaphysis # yeah dot net#include<bits/stdc++.h>usingnamespacestd;typedeflonglongintbigNumber;intmain(){intfactors[3]={2,3,5};set<bigNumber>uglyNumbers;priority_queue<bigNumber,vector<bigNumber>,greater<bigNumber>>candidates;candidates.push(1);for(inti=1;i<=1500;i++){bigNumber top;do{top=candidates.top();candidates.pop();}while(uglyNumbers.count(top)>0);uglyNumbers.insert(top);for(intj=0;j<3;j++){bigNumber next=top*factors[j];if(uglyNumbers.count(next)==0)candidates.push(next);}if(i==1500){cout<<"The 1500'th ugly number is "<<top<<"."<<endl;break;}}return0;}

总结

本题展示了两种生成丑数的方法:

  • 模拟法:简单直接,适合输入规模不大的情况。
  • 优先队列法:高效且可扩展,适合需要生成大量丑数的场景。

两种方法均能快速通过,输出结果一致。对于此类“按条件生成序列”的问题,优先队列法是一种非常实用的技巧。

最终答案:第150015001500个丑数为859963392859963392859963392

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1223417.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么 M4 32GB 的“显存体验”会和 PC 独显完全不一样?一篇把差异讲透的深度文章

很多人问 “MacBook Pro M4 32GB 显卡多少&#xff1f;”&#xff0c;其实背后隐藏的是一个更关键的问题&#xff1a; 同样写着“32GB”&#xff0c;为什么 Apple Silicon 上跑本地大模型的体验&#xff0c;和 PC 上 12GB / 16GB 独显完全不是一个逻辑&#xff1f; 答案不在“…

不加显卡:本地大模型的真实上限(CPU 跑)

很多人一聊本地大模型&#xff0c;第一反应就是显卡、显存、4090、A100。 但真正落到普通开发者、桌面设备、长期稳定使用这个语境里&#xff0c;你会发现一个更现实的问题&#xff1a; 不加显卡&#xff0c;只用 CPU&#xff0c;本地大模型到底能跑到什么程度&#xff1f; 我直…

LLaMA 3.2 1B / 3B、Qwen2.5 3B / 7B(Q4)、Mistral 7B(Q4_K_M)CPU 本地推理时代的三种“性格模型”,该怎么选?

如果你已经接受一个现实&#xff1a;不加显卡&#xff0c;只用 CPU 跑本地大模型&#xff0c;那真正的问题就不再是“能不能跑”&#xff0c;而是——跑哪一个&#xff0c;才不会后悔。LLaMA 3.2、Qwen2.5、Mistral 7B&#xff0c;基本构成了当前 CPU-only 场景下的三条主流路线…

普通个人电脑能跑多大的大模型?显存、模型规模与 CPU+GPU 的现实解法

一、一般个人电脑的 GPU / 显存&#xff0c;到底是什么水平&#xff1f;先给你一张现实世界分布图&#xff08;不是发烧友论坛那种&#xff09;&#xff1a;1️⃣ 最常见的个人电脑 GPU 显存区间设备类型常见 GPU显存核显 / 轻薄本Intel / AMD iGPU共享内存&#xff08;0&#…

2026皮革外观缺陷检测设备技术创新与应用实践

在皮革制品生产过程中,外观缺陷检测是保障产品质量的关键环节。传统人工检测方式受限于人眼分辨率、疲劳度及主观判断差异,易导致漏检、误检,难以满足现代化大生产对效率与精度的要求。皮革外观缺陷检测设备通过集成…

C++ 中面向对象的接口设计杂谈

1. 复制-修改-返回 的惯用手法 2. `const auto&` 和 `auto&&` 两个引用延长生存期,是当把**临时对象**绑定到它们时延长生存期。它们要么绑定临时对象,要么绑定到生存期更长的对象的引用,否则将悬垂。C…

2026钙钛矿外观缺陷检测设备技术应用与发展动态

钙钛矿材料作为新能源、光电等领域的关键基础材料,其外观质量直接影响终端产品性能与安全性。在钙钛矿薄膜、电池组件等生产过程中,划痕、鼓包、杂质等外观缺陷可能导致产品良率下降、使用寿命缩短,因此高精度、高效…

最新靠谱京东e卡回收平台指南

随着京东e卡市场流通量扩大,闲置卡券回收需求激增。据行业统计,2025年超四成闲置卡券通过专业平台完成变现。面对海量京东e卡回收渠道,如何选择安全、高效、透明的平台?本文从资质、效率、价格三大核心维度,为您梳…

HoRain云--深入解析Linux内核current机制

&#x1f3ac; HoRain 云小助手&#xff1a;个人主页 ⛺️生活的理想&#xff0c;就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站&#xff0c;性价比超高&#xff0c;大内存超划算&#xff01;忍不住分享一下给大家。点击跳转到网站。 目录 ⛳️ 推荐 …

百考通AI:您的智能学术加速器,让期刊论文写作从“苦差事”变“快车道”

在科研的征途上&#xff0c;撰写一篇符合目标期刊要求、逻辑严谨、内容充实的高质量论文&#xff0c;是每一位学者和学生必须跨越的高峰。然而&#xff0c;从选题立意、框架搭建到数据处理、文献综述&#xff0c;每一个环节都可能成为阻碍进度的“拦路虎”。面对核心期刊的高门…

百考通AI:您的智能数据分析师,让复杂洞察一键生成

在当今这个数据驱动的时代&#xff0c;无论是学术研究、商业决策还是市场运营&#xff0c;数据分析都已成为不可或缺的核心能力。然而&#xff0c;对于非专业人员而言&#xff0c;面对海量数据和复杂的分析工具&#xff0c;如何快速、准确地提炼出有价值的洞察&#xff0c;往往…

百考通AI:您的智能问卷设计专家,让调研从“耗时耗力”到“一键生成”

在市场研究、用户洞察、学术调查乃至内部管理的每一个环节&#xff0c;一份设计精良的问卷都是获取有效数据、驱动决策的关键起点。然而&#xff0c;设计一份既能精准捕捉信息、又能保证用户体验的问卷&#xff0c;往往需要耗费大量的时间与专业技巧。从确定目标、筛选受众、构…

AlphaFold五年成就:AI重塑生物学研究

AlphaFold: Five Years of Impact 自2020年以来&#xff0c;AlphaFold加速了科学进程并推动了全球范围内的生物学发现浪潮——这一成就已获得诺贝尔奖的认可。 五年前&#xff0c;AlphaFold 2解决了蛋白质结构预测问题&#xff0c;为生物学研究开辟了新的途径&#xff0c;并首次…

百考通AI:引领智能学习新纪元,打造个性化备考全能助手

在信息爆炸的时代&#xff0c;每一位考生都面临着海量知识筛选、高效复习规划与精准应试训练的多重挑战。如何从繁杂的学习资料中快速提取重点&#xff1f;如何在有限时间内实现系统化知识掌握&#xff1f;如何借助科技力量实现高效、个性化、科学化的备考&#xff1f;百考通AI…

百考通AI:不只是降重,更是质量重塑的智能写作伙伴

在人工智能日益普及的今天&#xff0c;无论是学术研究者、职场人士还是广大学生&#xff0c;都面临着文本创作与优化的共同挑战&#xff1a;如何提升文章质量、降低重复率、优化内容结构&#xff0c;同时保持专业与自然&#xff1f;百考通AI&#xff08;https://www.baikaotong…

百考通AI:智能文本处理的终极入口,您的高效写作与学习伙伴

在这个信息高速流转、知识更新迭代的时代&#xff0c;每个人都可能面临这样的瞬间&#xff1a;一份至关重要的论文需要紧急优化&#xff0c;一份项目报告亟待润色提升&#xff0c;或者一批学习资料渴望系统梳理。当您面对这些文本处理需求时&#xff0c;您需要的是一个稳定、强…

百考通AI:您的智能文献研究伙伴,从标题到参考文献一站智成

在学术研究和论文写作的道路上&#xff0c;文献工作往往是最耗时却又最关键的环节。选题初期如何快速建立知识图谱&#xff1f;文献综述怎样才能既全面又有深度&#xff1f;参考文献格式整理为何总是繁琐易错&#xff1f;百考通AI&#xff08;https://www.baikaotongai.com&…

Redis各种架构安装部署

本教程将演示在 linux 环境下安装 Redis7&#xff0c;给⼤家最简单&#xff0c;最快捷的安装⽅式&#xff0c;其中包括单机部署、主从部署、哨兵部署、集群部署的安装以及相应的架构介绍。 一、单机部署 1. 检查安装 gcc 环境 Redis是由C语⾔编写的&#xff0c;它的运⾏需要C环…

百考通AI:您的智能学术助手,让开题报告写作化繁为简

在当今快节奏的学术与职场环境中&#xff0c;高效、精准地完成一份高质量的开题报告&#xff0c;是每一个学生和研究者面临的共同挑战。从选题的迷茫、框架的搭建&#xff0c;到文献的搜集与整理&#xff0c;再到创新点的提炼与论证&#xff0c;每一个环节都耗费着大量的时间与…

矿山“数字皮带秤”:AI纠偏让输送损耗<0.2%

皮带输送是矿山物料转运的核心环节&#xff0c;输送精度与皮带跑偏控制直接决定物料损耗与生产效率。传统矿山皮带秤依赖人工校准&#xff0c;无法实时识别皮带跑偏、物料偏载等问题&#xff0c;不仅计量误差大&#xff0c;还易因跑偏导致物料洒落、皮带磨损&#xff0c;输送损…