您的位置:首页 > 其它

hdu 1058 Humble Numbers

2013-10-03 14:53 253 查看
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1058

只需要前5842个满足条件的数,打好一张表。

#include<stdio.h>
int num[6000];
int min(int a,int b,int c,int d)
{
int i,j;
if(a<b)
i=a;
else
i=b;
if(c<d)
j=c;
else
j=d;
return i>j?j:i;
}
int main()
{
int n,i;
int a1,a2,a3,a4,e1,e2,e3,e4;
a1=a2=a3=a4=1;
num[1]=1;
//相当于四个队列,但每次只用一个队列的数字
for(i=2;i<=5842;i++)
{
e1=num[a1]*2;
e2=num[a2]*3;
e3=num[a3]*5;
e4=num[a4]*7;
num[i]=min(e1,e2,e3,e4);
if(num[i]==e1)
a1++;
if(num[i]==e2)
a2++;
if(num[i]==e3)
a3++;
if(num[i]==e4)
a4++;
}
while(scanf("%d",&n)&&n)
{
printf("The %d",n);
if(n<10)
{
if(n==1)
printf("st");
else if(n==2)
printf("nd");
else if(n==3)
printf("rd");
else
printf("th");
}
else
{
if(n%10==1&&n%100!=11)
printf("st");
else if(n%10==2&&n%100!=12)
printf("nd");
else if(n%10==3&&n%100!=13)
printf("rd");
else
printf("th");
}
printf(" humble number is %d.\n",num
);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: