杭电1058

/*********************************
 *    日期:2011-3-10
 *    作者:SJF
 *    题号:杭电1058
 *    题目:Humble Numbers
 *    结果:AC
 *    题意:
 *    总结:DP问题
**********************************/
#include<stdio.h> 
#define N 5843 
int f[N]; 
int min(int a,int b,int c,int d) 
{ 
    int x=a>b?b:a; 
    int y=c>d?d:c; 
    int m=y>x?x:y; 
    return m; 
} 
int main() 
{ 
    int a,b,c,d,i,n; 
    a=b=c=d=1; 
    f[1]=1; 
    for(i=2;i<=N;i++) 
    { 
        f[i]=min(f[a]*2,f[b]*3,f[c]*5,f[d]*7); 
        if(f[i]==f[a]*2) 
            a++; 
        if(f[i]==f[b]*3) 
            b++; 
        if(f[i]==f[c]*5) 
            c++; 
        if(f[i]==f[d]*7) 
            d++; 
    } 
    while(scanf("%d",&n)!=EOF&&(n!=0)) 
    { 
        if(n%100==11||n%100==12||n%100==13) printf("The %dth humble number is %d.\n",n,f[n]); 
        else 
        { 
            if(n%10==1) printf("The %dst humble number is %d.\n",n,f[n]); 
            else if(n%10==2)printf("The %dnd humble number is %d.\n",n,f[n]); 
            else if(n%10==3)printf("The %drd humble number is %d.\n",n,f[n]); 
            else printf("The %dth humble number is %d.\n",n,f[n]); 
        } 
    } 
    return 0; 
}


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值