zoukankan      html  css  js  c++  java
  • 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)

     1 #include<iostream>  
     2 #include<cstdio>  
     3 #include<cstring>  
     4 #include<algorithm>  
     5 using namespace std;
     6 
     7 const int maxn=6000+5;
    
     8 int dp[maxn];
     9 
    10 int min(int a,int b,int c,int d)
    11 {
    12     a=a<b?a:b;
    13     b=c<d?c:d;
    14     return a<b?a:b;
    15 }
    16 
    17 int main()
    18 {
    19     int n,i,p1,p2,p3,p4,dp1,dp2,dp3,dp4;
    20     dp[1]=1;
    21     p1=p2=p3=p4=1;
    22     for(i=2;i<=5850;i++)
    23     {
    24         dp1=2*dp[p1];
    25         dp2=3*dp[p2];
    26         dp3=5*dp[p3];
    27         dp4=7*dp[p4];
    28         dp[i]=min(dp1,dp2,dp3,dp4);
    29         if(dp[i]==dp1) p1++;
    30         if(dp[i]==dp2) p2++;
    31         if(dp[i]==dp3) p3++;
    32         if(dp[i]==dp4) p4++;
    33     }
    34     while(scanf("%d",&n)!=EOF&&n)
    35     {
    36         if(n%10==1&&n%100!=11)
    37         printf("The %dst humble number is %d.
    ",n,dp[n]);
    38         else if(n%10==2&&n%100!=12)
    39         printf("The %dnd humble number is %d.
    ",n,dp[n]);
    40         else if(n%10==3&&n%100!=13)
    41         printf("The %drd humble number is %d.
    ",n,dp[n]);
    42         else
    43         printf("The %dth humble number is %d.
    ",n,dp[n]);
    44     }
    45     return 0;
    46 }
    View Code
  • 相关阅读:
    Azure存储账户的日志分析方法
    导出zabbix监控数据
    centos7下kubernetes(18。kubernetes-健康检查)
    centos7下kubernetes(17。kubernetes-回滚)
    unity接入安卓SDK,与安卓相互通信
    (转)坐标 旋转 计算
    矩阵运算试验
    photonServer学习之连接数据库
    C#委托链
    git命令大全
  • 原文地址:https://www.cnblogs.com/wuyuewoniu/p/4296404.html
Copyright © 2011-2022 走看看