题目链接:http://codeforces.com/problemset/problem/27/E
代码:
#include <cstdio>
#include <iostream>
#include <cstring>
#define sf scanf
#define pf printf
using namespace std;
int prim[] = {2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59};
typedef long long LL;
LL INF = 1e18,ans;
int n;
void DFS(LL v,int cnt,int pos){
// pf("%lld %lld %d %d\n",ans,v,cnt,pos);
if(cnt > n) return;
if(cnt == n && v <= ans){
ans = v;
return;
}
for(int i = 1;i <= 63;++i){
v *= prim[pos];
if(v <= ans) DFS(v,cnt * (i + 1),pos + 1);
else return;
}
}
int main(){
sf("%d",&n);
ans = INF;
DFS(1,1,0);
pf("%lld\n",ans);
}