题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=95
//C++代码
#include<iostream>
#include<set>
using namespace std;
int main(){
int n,m=0;
long long a[6000];
string b[4]={"th","st","nd","rd"};
set<long long> s;
s.insert(1);
while(m<=5842){
long long t=*s.begin();
s.erase(s.begin());
a[++m]=t;
s.insert(2*t);
s.insert(3*t);
s.insert(5*t);
s.insert(7*t);
}
while(cin>>n,n){
m=0;
if(n%10==1 && n%100!=11) m=1;
else if(n%10==2 && n%100!=12) m=2;
else if(n%10==3 && n%100!=13) m=3;
cout<<"The "<<n<<b[m]<<" humble number is "<<a[n]<<"."<<endl;
}
return 0;
}