您的位置:首页 > 其它

hdu 1058 Humble Numbers

2013-05-11 20:20 417 查看
状态转移方程:F(n)=min(F(i)*2,F(j)*3,F(k)*5,F(m)*7) (n>i,j,k,m)
特别的:i,j,k,m 只有在本项被选中后才移动

题目还要注意的一点是输出问题。。。

  题目传送门

#include<stdio.h>
int hum[6000];

int min(int a, int b, int c, int d)
{
int m;
if(a>b) m = b;
else m = a;
if(m>c) m =c;
if(m>d) m =d;
return m;
}
int main()
{
int e1=1,e2=1,e3=1,e4=1;
int a1,a2,a3,a4,i,n;
hum[1] = 1;
for(i=2;i<5843;i++)
{
a1 = 2*hum[e1];
a2 = 3*hum[e2];
a3 = 5*hum[e3];
a4 = 7*hum[e4];
hum[i] = min(a1,a2,a3,a4);
if(hum[i] == a1) e1++;
if(hum[i] == a2) e2++;
if(hum[i] == a3) e3++;
if(hum[i]==a4) e4++;
}
while(scanf("%d",&n),n)
{
if(n%100==11||n%100==12||n%100==13)
printf("The %dth humble number is %d.\n",n,hum
);
else if(n%10 == 1) printf("The %dst humble number is %d.\n",n,hum
);
else if(n%10 == 2) printf("The %dnd humble number is %d.\n",n,hum
);
else if(n%10 == 3) printf("The %drd humble number is %d.\n",n,hum
);
else printf("The %dth humble number is %d.\n",n,hum
);
}
return 0;
}


参考:http://www.wutianqi.com/?p=951
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: