//416K 16MS G++
#include <cstdio>
#include <cstring>
using namespace std;
const int MAX = 1505;
long long num[MAX];
long long MIN(long long a, long long b) {
return a < b ? a: b;
}
void init() {
int factor1 = 2;
int factor2 = 3;
int factor3 = 5;
int p1 = 0;
int p2 = 0;
int p3 = 0;
num[0] = 1;
for (int i = 1; i < MAX; i++) {
num[i] = MIN(factor1*num[p1], MIN(factor2*num[p2], factor3*num[p3]));
if (num[i] == factor1*num[p1]) p1++;
if (num[i] == factor2*num[p2]) p2++;
if (num[i] == factor3*num[p3]) p3++;
}
}
int main() {
init();
int ordinal;
while(scanf("%d", &ordinal)) {
if (ordinal == 0) {
return 0;
}
printf("%lld\n", num[ordinal-1]);
}
}
同2545, 当时就看过这道题的解法,不过一直没真正动手写过,结果真写的时候就不会了.