您的位置:首页 > 其它

hdu1058 Humble Numbers

2013-01-29 23:29 330 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1058

DP

#include <stdio.h>
#define N 5848

int h
;

int a[4];
int p[4] = {1, 1, 1, 1};

int min()
{
int i, flag = 0;
for(i=1; i<4; i++)
{
if(a[i] < a[flag])
{
flag = i;
}
}
for(i=0; i<4; i++)
{
if(a[i] == a[flag])
{
p[i] ++;
}
}
return a[flag];
}

void init()
{
int hash[4] = {2, 3, 5, 7};
int i, j;
h[1] = 1;
for(i=2; i<N; i++)
{
for(j=0; j<4; j++)
{
a[j] = h[p[j]] * hash[j];
}
h[i] = min();
//printf("%d ", h[i]);
}
}

int main()
{
int i;
init();
while(scanf("%d", &i), i)
{
printf("The %d", i);
if((10<i%100 && i%100<20) || i%10>3 || i%10==0)
{
printf("th");
}
else
{
if(i%10==1)
{
printf("st");
}
else
{
if(i%10==2)
{
printf("nd");
}
else
{
printf("rd");
}
}
}
printf(" humble number is %d.\n", h[i]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: