传送门http://acm.hdu.edu.cn/showproblem.php?pid=1058
不知道该怎么说的一道题, 暴力的复杂度比dp要低…..
//啊其实暴力复杂度多了一个log(n)
- 坑点…
111的序数词是111th…
大概已经是个英语废了/吐血
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
string s;
long long tmp, p7, p5, p3, p2, n, cnt, ans[10000];
long long ppow(int a, int b) {
long long ret = 1;
for (int i = 0; i < b; ++i)
ret *= a;
return ret;
}
void init() {
for (int i = 0; ; ++i) {
tmp = 1;
p7 = ppow(7, i);
if (tmp * p7 > 3e9) break;
for(int j = 0; ; ++j) {
p5 = ppow(5, j);
if (tmp * p7 * p5 > 3e9) break;
for (int k = 0; ; ++k) {
p3 = ppow(3, k);
if (tmp * p7 * p5 * p3 > 3e9) break;
for (int t = 0; ; ++t) {
p2 = ppow(2, t);
if (tmp * p7 * p5 * p3 * p2 > 3e9) break;
ans[cnt++] = tmp*p7*p5*p3*p2;
}
}
}
}
sort (ans, ans+cnt);
return ;
}
int main() {
// freopen("in.t", "r", stdin);
// freopen("out.t", "w",stdout);
init();
while (cin >> n && n) {
if (n % 10 == 1) s = "st";
else if (n % 10 == 2) s = "nd";
else if (n % 10 == 3) s = "rd";
else s = "th";
if (n%100 == 11 || n%100 == 12 || n%100 == 13) s = "th";
cout << "The " << n << s << " humble number is " << ans[n-1] << "." << endl;
}
return 0;
}
2017-09-08