http://poj.org/problem?id=1338
DP 一步一步累乘上去 用三个标记比较大小就行
#include<iostream>
#include<fstream>
using namespace std;
long long a[1501];
int n;
void read()
{
int i,j,k;
int a1=1,a2=1,a3=1;
a[1]=1;
a1=1;
a2=1;
a3=1;
for(i=2; i<=1500; i++)
{
a[i]=min(a[a1]*2,min(a[a2]*3,a[a3]*5));
if(a[i]==a[a1]*2)
a1++;
if(a[i]==a[a2]*3)
a2++;
if(a[i]==a[a3]*5)
a3++;
}
}
int main()
{
read();
while(~scanf("%d",&n))
{
if(n==0) break ;
printf("%d\n",a[n]);
}
return 0;
}