// 打表
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <algorithm>
#include <iostream>
#define maxn 0Xfffffff
using namespace std;
int dp[5850], pos;
int i, j, k, l;
int MIN_()
{
int x = min(min(dp[i] * 2, dp[j] * 3), min(dp[k] * 5, dp[l] * 7));
if(x == dp[i] * 2) i++;
else if(x == dp[j] * 3) j++;
else if(x == dp[k] * 5) k++;
else l++;
return x;
}
int main()
{
pos = 2;
dp[1] = 1;
i = 1, j = 1, k = 1, l = 1;
while(pos <= 5842)
{
int x= MIN_();
if(x != dp[pos - 1]) dp[pos++] = x;
}
int n;
while(cin>>n && n)
{
if(n % 10 == 1 && n % 100 != 11)
printf("The %dst humble number is %d.\n", n, dp[n]);
else if(n % 10 == 2 && n % 100 != 12)
printf("The %dnd humble number is %d.\n", n, dp[n]);
else if(n % 10 == 3 && n % 100 != 13)
printf("The %drd humble number is %d.\n", n, dp[n]);
else
printf("The %dth humble number is %d.\n", n, dp[n]);
}
return 0;
}
hdu 1058
最新推荐文章于 2020-12-23 13:39:08 发布