来源http://acm.hdu.edu.cn/showproblem.php?pid=1058
题意很简单。
需要注意的是筛选出平庸数的小技巧和输出时英文第11,12,13的不同表述方式。
#include<stdio.h>
int hn[5845];
int min2(int a,int b)
{
return (a>b)?b:a;
}
int minn(int a,int b,int c,int d)
{
return min2(min2(a,b),min2(c,d));
}
int main()
{
int n;
int i,l1,l2,l3,l4;
hn[1]=1;i=1;l1=l2=l3=l4=1;
while(hn[i]<2000000000)
{
hn[++i]=minn(2*hn[l1],3*hn[l2],5*hn[l3],7*hn[l4]);
if(hn[i]==2*hn[l1])l1++;
if(hn[i]==3*hn[l2])l2++;
if(hn[i]==5*hn[l3])l3++;
if(hn[i]==7*hn[l4])l4++;//只能用if,而不能用else if!!!!
}
while(~scanf("%d",&n)&&n!=0)
{
if(n%10 == 1&&n%100!=11)
printf("The %dst humble number is ",n);
else if(n%10 == 2&&n%100!=12)
printf("The %dnd humble number is ",n);
else if(n%10 == 3&&n%100!=13)
printf("The %drd humble number is ",n);
else
printf("The %dth humble number is ",n);
printf("%d.\n",hn[n]);
}
return 0;
}
本文介绍了一种求解平庸数(特定类型的整数)的算法实现,并展示了如何使用C语言来生成指定位置的平庸数。文章还讨论了输出格式中序数词的变化,确保英语表述的准确性。

被折叠的 条评论
为什么被折叠?



