poj1338

简单题

View Code
   
     
#include < iostream >
#include
< cstdio >
#include
< cstdlib >
#include
< cstring >
using namespace std;

#define maxn 1505
#define inf 0x3f3f3f3f

int f[maxn];
int pos[ 3 ], fac[ 3 ];

int main()
{
// freopen("t.txt", "r", stdin);
f[ 1 ] = 1 ;
pos[
0 ] = pos[ 1 ] = pos[ 2 ] = 1 ;
fac[
0 ] = 2 ;
fac[
1 ] = 3 ;
fac[
2 ] = 5 ;
for ( int i = 2 ; i <= 1500 ; i ++ )
{
f[i]
= inf;
for ( int j = 0 ; j < 3 ; j ++ )
if (f[pos[j]] * fac[j] < f[i])
f[i]
= f[pos[j]] * fac[j];
for ( int j = 0 ; j < 3 ; j ++ )
if (f[pos[j]] * fac[j] <= f[i])
pos[j]
++ ;
}
int n;
while (scanf( " %d " , & n), n)
printf(
" %d\n " , f[n]);
return 0 ;
}

你可能感兴趣的:(poj)