hdu_1058
4788 단어 HDU
끝은 2인데 12의 nd는 아니에요.
끝은 3인데 13이 아닌 rd.
기타th
표 작성 과정:
dp[x]는 x번째 humble number를 나타냅니다.
dp의 모든 요소는 1부터 시작합니다.*2*3*5*7은
// hdu 1058
// dp
// Feb.16 2015
#include <cstdio>
#include <algorithm>
int dp[5900], n, n2, n3, n5, n7;
void pre_do()
{
dp[1] = 1;
n2 = n3 = n5 = n7 = 1;
for(int i = 2; i <= 5900; ++i){
dp[i] = std::min(dp[n2]*2, std::min(dp[n3]*3, std::min(dp[n5]*5, dp[n7]*7) ));
if(dp[i] == dp[n2]*2) ++n2;
if(dp[i] == dp[n3]*3) ++n3;
if(dp[i] == dp[n5]*5) ++n5;
if(dp[i] == dp[n7]*7) ++n7;
}
}
int main(int argc, char const *argv[])
{
// freopen("in", "r", stdin);
pre_do();
while(scanf("%d",&n) && n)
{
printf("The ");
if(n%10==1&&n%100!=11)printf("%dst",n);
else if(n%10==2&&n%100!=12)printf("%dnd",n);
else if(n%10==3&&n%100!=13)printf("%drd",n);
else printf("%dth",n);
printf(" humble number is %d.
",dp[n]);
}
return 0;
}