BZOJ1053 [HAOI2007]反素数ant

有一定的结论需要知道、、、

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <algorithm>
 4 using namespace std;
 5 typedef long long LL;
 6 LL ans,ans1,n,prime[8] = {2,3,5,7,11,13,17,19};
 7 void dfs(int id,int mmax,LL t,LL tt)
 8 {
 9     if(id>=8){return;}
10 
11     for(int i = 1;i<=mmax;++i){
12         t*=prime[id];
13         if(t>n)return;
14         if(tt*(i+1)>ans1)ans1 = tt*(i+1),ans = t;
15         if(tt*(i+1)==ans1)ans = min(t,ans);
16         dfs(id+1,i,t,tt*(i+1));
17     }
18 }
19 int main()
20 {
21     cin>>n;
22     ans = 0,ans1 = 1;
23     dfs(0,25,1,1);
24     cout<<ans<<endl;
25     return 0;
26 }

 

posted on 2015-08-01 03:12  round_0  阅读(112)  评论(0编辑  收藏  举报

导航