标签:
末尾是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.\n",dp[n]); } return 0; }
标签:
原文地址:http://www.cnblogs.com/takeoffyoung/p/4294762.html