[bzoj1053]反素数
http://blog.csdn.net/Le_ballon_rouge/article/details/47909363

1 #include <iostream> 2 #include <algorithm> 3 #include <cstdio> 4 #include <cstring> 5 #include <cstdlib> 6 using namespace std; 7 8 int prime[15]={1,2,3,5,7,11,13,17,19,23,29},n,_cnt,_ans; 9 void dfs(int pos,long long num,int size,int cnt){ 10 if(pos>10)return ((_cnt<cnt&&_ans<num)||(num<=_ans&&cnt>=_cnt)?_cnt=cnt,_ans=num:0),void(); 11 for(int i=0,t=1;i<=size;i++)if(num*t<n)dfs(pos+1,num*t,i,cnt*(i+1)),t*=prime[pos]; 12 } 13 14 int main(){ 15 scanf("%d",&n); 16 dfs(0,1,30,1); 17 printf("%d\n",_ans); 18 }