hdu_1058

4788 단어 HDU
끝은 1인데 11이 아닌 st.
끝은 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; }

좋은 웹페이지 즐겨찾기