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*3,1*5,1*7)
4:min(2*2,2*3,1*5,1*7)
5:min(3*2,2*3,1*5,1*7)
6:min(3*2,2*3,2*5,1*7)
7:min(4*2,3*3,2*5,1*7)
8:min(4*2,3*3,2*5,2*7)
9:min(5*2,3*3,2*5,2*7)
然后ppt里面的方程也就好理解了
dp[i]=min(dp[p1]*2,dp[p2]*3,dp[p3]*5,dp[p4]*7)
如果选中了哪一个数,对应的伪指针移动1 注意上面的6的情况,如果有两个或两个以上的数和它相等,对应的伪指针都移动1
然后就是输出的问题了
1是first
2是second
3是third
4是fourth
----
11是eleventh
12是twelfth
13是thirteenth -----
这一题也是学习的---感觉它的转移方程有一点点不一样---用已经算出来的丑数去推出新的丑数--- 另外输出的时候看了半天(为什么要判断这么多次----5555)原来是因为序数词的后缀不一样(===5555555)
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std; const int maxn=+; int dp[maxn]; int min(int a,int b,int c,int d)
{
a=a<b?a:b;
b=c<d?c:d;
return a<b?a:b;
} int main()
{
int n,i,p1,p2,p3,p4,dp1,dp2,dp3,dp4;
dp[]=;
p1=p2=p3=p4=;
for(i=;i<=;i++)
{
dp1=*dp[p1];
dp2=*dp[p2];
dp3=*dp[p3];
dp4=*dp[p4];
dp[i]=min(dp1,dp2,dp3,dp4);
if(dp[i]==dp1) p1++;
if(dp[i]==dp2) p2++;
if(dp[i]==dp3) p3++;
if(dp[i]==dp4) p4++;
}
while(scanf("%d",&n)!=EOF&&n)
{
if(n%==&&n%!=)
printf("The %dst humble number is %d.\n",n,dp[n]);
else if(n%==&&n%!=)
printf("The %dnd humble number is %d.\n",n,dp[n]);
else if(n%==&&n%!=)
printf("The %drd humble number is %d.\n",n,dp[n]);
else
printf("The %dth humble number is %d.\n",n,dp[n]);
}
return ;
}
HDU 1058 Humble Numbers【DP】的更多相关文章
- 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 ...
- HDU1058 Humble Numbers 【数论】
Humble Numbers Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) T ...
- HDU 1058 Humble Numbers (动规+寻找丑数问题)
Humble Numbers Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) T ...
- Luogu2723丑数Humble Numbers【归并排序】
Luogu2723丑数Humble Numbers 题目背景 对于一给定的素数集合 S = {p1, p2, ..., pK},考虑一个正整数集合,该集合中任一元素的质因数全部属于S.这个正整数集合包 ...
- 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 - 1176 免费馅饼 【DP】
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1176 思路 因为刚开始的起点是固定的 但是终点不是固定的 所以我们可以从终点往起点推 dp[i][j] ...
随机推荐
- PHP-Java-Bridge的使用(平安银行支付功能专版)
去年做平安银行的时候,用到了PHP-Java-Bridge,后来写了一篇博客记录使用PHP-Java-Bridge的一些心得(连接:http://my.oschina.net/kenblog/blog ...
- js-jQuery对象与dom对象相互转换
http://blog.csdn.net/jueshengtianya/article/details/8823091 核心提示:jquery选择器得到的jquery对象和标准的 javascri ...
- sql server 存储过程,事务
1.存储过程,事务 CREATE PROCEDURE Proc_ceshi @id int, ), @returnval int output AS BEGIN SET NOCOUNT ON; Set ...
- JQuery的第一天实战学习
1.按照下面的工程来建: 2.新建UserVerify.html文件: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitiona ...
- 使用yum安装CDH Hadoop集群
使用yum安装CDH Hadoop集群 2013.04.06 Update: 2014.07.21 添加 lzo 的安装 2014.05.20 修改cdh4为cdh5进行安装. 2014.10.22 ...
- linux下配置QT(很全的步骤,从下载开始,配置QMAKESPEC)
一.下载Qt源码包到本机,然后解压缩#tar zxvf qt-x11-opensource-src-4.3.2.tar.gz -C /usr/local //将qt-x11-opensource-sr ...
- java.lang.ClassNotFoundException: org.springframework.context.event.GenericApplicationListener ----good
Caused by: java.lang.NoClassDefFoundError: org/springframework/context/event/GenericApplicationListe ...
- python2 和python3共存下问题
一.使用python2 or python3 1. 使用python2 $ python xxx.py 2. 使用python3 $ python3 xxx.py 二.脚本调用 /usr/bin/en ...
- Linux内核同步机制之(三):memory barrier【转】
转自:http://www.wowotech.net/kernel_synchronization/memory-barrier.html 一.前言 我记得以前上学的时候大家经常说的一个词汇叫做所见即 ...
- flex 4 布局样式
Flex 4 样式与布局 第一篇 Flex 4 与自定义布局(Layout) Flex 4/Spark组件架构的新功能之一是可以定制一个容器的布局而不必改变容器本身.您需要做的就是定义一个自定义布局. ...