hdu 1058 Humble Numbers(构造?枚举?)
题意:
一个数的质因子如果只是2,3,5,7中的若干个。则这个数叫做humble number。
例如:1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 27, ...
给n,问第n个humble number是多少。
思路:
所有的humble数的构造都是:(2^a)*(3^b)*(5^c)*(7^d)。a,b,c,d大于等于0。
X=a+b+c+d代表这个数是第X个humble数。
假设前i-1个humble数已经求出来了,第i个humble数如何求呢?
一定是前i-1个humble数中的某个humble数乘以2或乘以3或乘以5或乘以7得到的。
好了,枚举前i-1个humble数,找出大于第i-1个humble数并且是最小,那么它就是第i个humble数了。
看代码
代码:
ll a[5850];
int cn=0; int main(){ a[1]=1;
cn=1; while(cn<5842){
ll ans=INF;
ll temp;
rep(i,1,cn){
temp=a[i]*2; if(temp>a[cn]) ans=min(ans,temp);
temp=a[i]*3; if(temp>a[cn]) ans=min(ans,temp);
temp=a[i]*5; if(temp>a[cn]) ans=min(ans,temp);
temp=a[i]*7; if(temp>a[cn]) ans=min(ans,temp);
}
a[++cn]=ans;
} int n;
while(scanf("%d",&n),n){
int t=n%10;
if(t==1 && n%100!=11){
printf("The %dst humble number is ",n);
}
else if(t==2 && n%100!=12){
printf("The %dnd humble number is ",n);
}
else if(t==3 && n%100!=13){
printf("The %drd humble number is ",n);
}
else{
printf("The %dth humble number is ",n);
}
printf("%I64d.\n",a[n]);
} return 0;
}
hdu 1058 Humble Numbers(构造?枚举?)的更多相关文章
- HDOJ(HDU).1058 Humble Numbers (DP)
HDOJ(HDU).1058 Humble Numbers (DP) 点我挑战题目 题意分析 水 代码总览 /* Title:HDOJ.1058 Author:pengwill Date:2017-2 ...
- HDU 1058 Humble Numbers (DP)
Humble Numbers Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- hdu 1058:Humble Numbers(动态规划 DP)
Humble Numbers Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- HDU 1058 Humble Numbers (动规+寻找丑数问题)
Humble Numbers Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) T ...
- HDU 1058 Humble Numbers(离线打表)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1058 解题报告:输入一个n,输出第n个质因子只有2,3,5,7的数. 用了离线打表,因为n最大只有58 ...
- hdu 1058 Humble Numbers
这题应该是用dp来做的吧,但一时不想思考了,写了个很暴力的,类似模拟打表,然后排序即可,要注意的是输出的格式,在这里wa了一发,看了别人的代码才知道哪些情况没考虑到. #include<cstd ...
- HDU 1058 Humble Numbers【DP】
题意:给出丑数的定义,只含有2,3,5,7这四个素数因子的数称为素数.求第n个丑数. 可以先观察几个丑数得出规律 1:dp[1] 2:min(1*2,1*3,1*5,1*7) 3:min(2*2,1* ...
- SOJ1029 Humble Numbers (枚举)
A number whose only prime factors are 2,3,5 or 7 is called a humble number. The sequence 1, 2, 3, 4, ...
- HDU 1058 Humble Number
Humble Number Problem Description A number whose only prime factors are 2,3,5 or 7 is called a humbl ...
随机推荐
- python中字符串的各种方法
图片来源见水印,一个学python的公众号
- CodeForce-811C Vladik and Memorable Trip(动态规划)
Vladik and Memorable Trip CodeForces - 811C 有一个长度为 n 的数列,其中第 i 项为 ai. 现在需要你从这个数列中选出一些互不相交的区间,并且保证整个数 ...
- Java基础系列(26)- 打印三角形
package struct; public class TestDemo { public static void main(String[] args) { for (int i = 1; i & ...
- ci框架 查询构造器类
$this->db->get() 该方法执行 SELECT 语句并返回查询结果,可以得到一个表的所有数据: $query = $this->db->get('mytable') ...
- spl_autoload_register 实现自动加载
spl_autoload_register 注册给定的函数作为 __autoload 的实现 bool spl_autoload_register ([ callable $autoload_func ...
- YbtOJ#463-序列划分【二分答案,线段树,dp】
正题 题目链接:https://www.ybtoj.com.cn/problem/463 题目大意 给出长度为\(n\)的序列\(A,B\).要求划分成若干段满足 对于任何\(i<j\),若\( ...
- 深入浅出WPF-06.Binding(绑定)03
MultiBinding(多路Binding) 当UI中的显示信息是由源Source中的多个数据来决定时,使用MultiBinding.他和Binding的区别是需要传递多个元数据,针对多个数据源需要 ...
- Oracle实时数据抽取项目问题总结
Oracle实时数据抽取项目问题总结 项目背景介绍 项目主要是将Oracle.MySQL.SQLServer.Db2等其他数据库的实时变更数据同步到其他异构数据库中.本篇文章主要是讨论oracle的实 ...
- nginx负载均衡部署
1 系统版本 CentOS Linux release 6.0.1708 (Core) 2 编译安装前所需要的准备: 1.GCC编译器 首先检查GCC是否安装,命令:gcc -v ,如果显示有相关版本 ...
- C++核心编程 2 引用
引用的基本使用 作用:给变量起别名 ,语法:数据类型 & 别名 = 原名 注意:引用必须初始化,且初始化之后,就不可更改. 引用做函数参数 作用:函数传参时,可以利用引用的技术让形参修饰实参 ...