hud_1058   Humble Numbers_hud k-thnumber-程序员宅基地

技术标签: 算法  动态规划  

hud_1058   Humble Numbers

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1058 

题目原文: 

 题意:

该题就是让我们找出题意里所谓的“Humble Numbers”,根据题目的意思,‘Humble Numbers’指的是一个数的所有质因子必须由2,3,5和7组成,非质因子无要求,例如14,它的因子为1,2,7,14,它的质因子为7,而7是在{2,3,5,7}这个集合里的,所以14是Humble Numbers,例如22,它的因子为1,2,11,22,它的质因数有2,11,然而11不在{2,3,5,7}这个集合里面,所以22不是Humble Numbers。题目的要求就是让我们找出第i个Humble Numbers。

解题思路:

根据题目意思,Humble Numbers的质因数自能是{2,3,5,7},所以Humble Numbers = 2^{a}*3^{b}*5^{c}*7^{d},根据这个推导式子打表即可得到最后的答案。(这里注意如果一个数没有质因子,那么它也是Humble Numbers)。

题目的注意点:

该题目需要注意的第一个注意点在解题思路上已经提及,第二个主意点的是它的输出格式,其中末尾由11,12,13这三个数组成的,就用-th,如果除末尾11,12,13之外,末尾由1组成,则用-st,末尾由2组成,则用-nd,末尾由3组成,则用-rd,除此之外,全部使用-th。

AC代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 6000;
int num[maxn];  //用于存取Humble number序列
int main()
{
	num[0] = 0, num[1] = 1;
	int l1,l2,l3,l4;
	l1 = l2 = l3 = l4 =1;
	for(int i = 2; i < maxn; i++){
		num[i] = min(min(num[l1]*2, num[l2]*3), min(num[l3]*5, num[l4]*7));
		if(num[i] == 2*num[l1]) l1++;
		if(num[i] == 3*num[l2]) l2++;
		if(num[i] == 5*num[l3]) l3++;
		if(num[i] == 7*num[l4]) l4++;
	}                                    //使用推导式打表得出Humble number数序列
	int n;
	while(cin>>n){
		if(n == 0){
			break;      // 是0就结束程序,跳出循环 
		}
		if(n % 100 == 11 or n % 100 == 12 or n % 100 == 13){
			printf("The %dth humble number is %d.\n", n, num[n]);
		}else if(n % 10 ==1){
			printf("The %dst humble number is %d.\n", n, num[n]);
		}else if(n % 10 ==2){
			printf("The %dnd humble number is %d.\n", n, num[n]);
		}else if(n % 10 ==3){
			printf("The %drd humble number is %d.\n", n, num[n]);
		}else{
			printf("The %dth humble number is %d.\n", n, num[n]);
		}
	}
	return 0;
}

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xxwl123/article/details/116882729

智能推荐

Java中对象内存解析与方法参数传递机制-程序员宅基地

文章浏览阅读377次。理解Java中的对象内存解析和方法参数传递机制对于Java初学者而言是非常重要的。这不仅有助于编写更高效的代码,而且还能避免在程序设计中出现一些常见的错误。

C++11新特性(69)- sizeof...运算符_c++11 sizeof...-程序员宅基地

文章浏览阅读2.6k次,点赞4次,收藏7次。示例说明假设有一个程序,需要接受文字信息并生成学生档案,信息的形式为:"Name:ABC", "Age:20", "Wight:73","Address:Dalian", "Interest:football"程序解析上述信息后,形成以下形式的数据:根据本应用的要求,姓名,年龄和体重三项为必填项,地址和兴趣为可选项。 sizeof...运算符参考前一篇文章的做法,代..._c++11 sizeof...

ajax使用html()后样式无效,jquery.ajax使用字符串拼接后内联css样式失效-程序员宅基地

文章浏览阅读619次。问题所在:是这样的,我使用ajax调用了一串json数据,使用字符串拼接的方法动态插入div容器.结果css并没有对动态插入的内容加css样式.代码描述:css使用的内联,在head部分, jquery使用外联,在body后.我尝试过:$(function(){}) //入口函数加载window.onload = function(){} //原生dom加载(function(){})() ..._ajax异步添加html后样式失效

[CSS] CSS实现移动的三角边框箭头_css跟随点击移动的三角突出-程序员宅基地

文章浏览阅读451次。CSS实现移动的三角边框 箭头设计稿长这样,交互是点击旁边的 Tab,三角边框移动到对应的位置,讲一下大概的实现,这里的三角边框我用的是两个三角形拼接而成的,直线是Tab-item 的 border-right1、先把直线弄好.tab-item { position: relative; display: flex; align-content: start; align-items: center; cursor: pointer; border-_css跟随点击移动的三角突出

arduino测试ArduinoModbus库例程_arduino modbus-程序员宅基地

文章浏览阅读7.3k次,点赞4次,收藏30次。测试硬件:arduino nanoarduino mega2560 proArduino版本1.8.13ArduinoModbus库版本:1.0.3首先安装ArduinoModbus库还有一个依赖库例程/* Modbus RTU Server Kitchen Sink This sketch creates a Modbus RTU Server and demonstrates how to use various Modbus Server APIs. Circui_arduino modbus

android 4.0 屏蔽home键实现_android7.0屏蔽home-程序员宅基地

文章浏览阅读585次。开启copy模式:最近研究锁屏,按照常规的方法,常规方法如下Java代码 public void onAttachedToWindow() { this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); super.o_android7.0屏蔽home

随便推点

德邦快递接口开发-java(【新】下单服务接口)_调试德邦下单接口-程序员宅基地

文章浏览阅读2.8k次。查看文档:德邦文档链接【新】下单服务接口融合了标准类的散客电子面单,快递电子面单,零担电子面单所有的下单接口;该接口提供的服务:(1)快递电子面单,零担电子面单和散客电子面单下单,并支持预埋单号或者同步获取运单号;(2)轨迹订阅一切..._调试德邦下单接口

基于jira的缺陷自动化报表分析 (四)按人员统计缺陷情况_jira问题统计分析-程序员宅基地

文章浏览阅读4.3k次,点赞3次,收藏10次。一、创建数据库1、创建测试人员统计表CREATE TABLE `daily_test_bug` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_name` varchar(50) DEFAULT NULL COMMENT '开发账号', `test_name` varchar(20) DEFAULT NULL, `project_name` varchar(100) DEFAULT NULL COMMENT '项目名称', `Itera..._jira问题统计分析

树莓派Raspberry Zero W(无外接屏幕)登陆遇到的问题及解决办法_zerow无显示器登录系统-程序员宅基地

文章浏览阅读857次。树莓派Raspberry Zero W (无外接屏幕)登陆遇到的问题及解决办法SSH远程登陆1. IP端口扫描软件扫描不到树莓派的IP地址2. 输入有卡顿,或者不显示输入字符串口登陆1. 无法输入**第一种:软件终端只有一个绿光标在闪,没有任何字****第二种:出现了加载时的输出和登陆的提示,光标在用户名那里闪动,但无法输入**2. 字体都是白色SSH远程登陆前置条件:sd卡已经烧录了操作系统,且配好了ssh文件和wpa_supplicant.conf文件启动顺序:给树莓派供电,等待几分钟。_zerow无显示器登录系统

MATLAB处理EXCEL文件_matlab实现excel修改-程序员宅基地

文章浏览阅读5.2k次,点赞2次,收藏31次。当需要批量处理EXCEL文件时,手动处理太耗时间且可能出错,由于电脑上有Matlab,因此尝试了使用Matlab进行EXCEL文件的编辑,效果很好因此在这里向大家分享简单的使用方法。通过matlab自带的几个基本函数,对于excel文件进行批量处理,提高了办公效率,未来也会分享一些工作中使用到的实用代码。..._matlab实现excel修改

Flask-SQLAlchemy_flask_sqlalchemy-程序员宅基地

文章浏览阅读3w次,点赞53次,收藏204次。认识Flask-SQLAlchemyFlask-SQLAlchemy 是一个为 Flask 应用增加 SQLAlchemy 支持的扩展。它致力于简化在 Flask 中 SQLAlchemy 的使用。SQLAlchemy 是目前python中最强大的 ORM框架, 功能全面, 使用简单。ORM优缺点优点有语法提示, 省去自己拼写SQL,保证SQL语法的正确性orm提供方言功能(dialect, 可以转换为多种数据库的语法), 减少学习成本防止sql注入攻击搭配数据迁移, 更新数据库方便_flask_sqlalchemy

cron -f有什么用-程序员宅基地

文章浏览阅读287次,点赞3次,收藏6次。命令用于在前台运行 Cron 守护进程,主要用于调试、排错、容器化环境下的运行以及与其他工具的集成。但是在生产环境中,还是建议将 Cron 作为后台服务运行,并配合适当的日志记录和监视措施。因此,在生产环境中,通常还是建议将 Cron 作为后台服务运行,并使用适当的日志记录和监视机制来跟踪其运行情况。通常情况下,Cron 作为一个后台服务运行,并根据定义的任务计划自动执行任务。命令时,Cron 会在前台运行,并将其输出和错误信息直接显示在终端或命令行界面上。

推荐文章

热门文章

相关标签