题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=1058
#include<iostream>
#include<cstdio>
using namespace std;
int humble[6000];
int a1,a2,a3,a4;
int e1,e2,e3,e4;
int _min(int a,int b,int c,int d)
{
int min;
if(a<b)
min=a;
else
min=b;
if(min>c)
min=c;
if(min>d)
min=d;
return min;
}
int main()
{
int n,i;
a1=a2=a3=a4=1;
humble[1]=1;
for(i=2;i<6000;i++)
{
e1=humble[a1]*2;
e2=humble[a2]*3;
e3=humble[a3]*5;
e4=humble[a4]*7;
humble[i]=_min(e1,e2,e3,e4);
if(humble[i] == e1)
a1++;
if(humble[i] == e2)
a2++;
if(humble[i] == e3)
a3++;
if(humble[i] == e4)
a4++;
}
while(scanf("%d",&n)&& n)
{
if(n%100==11)
printf("The %dth humble number is %d.\n",n,humble[n]);
else if(n%100==12)
printf("The %dth humble number is %d.\n",n,humble[n]);
else if(n%100==13)
printf("The %dth humble number is %d.\n",n,humble[n]);
else if(n%10==1)
printf("The %dst humble number is %d.\n",n,humble[n]);
else if(n%10==2)
printf("The %dnd humble number is %d.\n",n,humble[n]);
else if(n%10==3)
printf("The %drd humble number is %d.\n",n,humble[n]);
else
printf("The %dth humble number is %d.\n",n,humble[n]);
}
return 0;
}