码迷,mamicode.com
首页 > 其他好文 > 详细

【BZOJ 1053】[HAOI2007]反素数ant

时间:2016-02-20 08:08:38      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:

Description

 

对于任何正整数x,其约数的个数记作g(x)。例如g(1)=1、g(6)=4。
如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数。例如,整数1,2,4,6等都是反质数。
现在给定一个数N,你能求出不超过N的最大的反质数么?

Input

一个数N(1<=N<=2,000,000,000)。

Output

不超过N的最大的反质数。

Sample Input

1000

Sample Output

840
他们说2*10^9内的数符合条件的素因子个数不超过12个
打表出来直接爆搜
 1 #include<cstdio>
 2 #define ll long long
 3 int pre[15]={1,2,3,5,7,11,13,17,19,23,29,31};
 4 int n;
 5 ll ans,num;
 6 void dfs(int k,ll now,ll cnt,int last){
 7     if(k==12){
 8         if(now>ans&&cnt>num){ans=now;num=cnt;return;}
 9         if(now<=ans&&cnt>=num){ans=now;num=cnt;return;}
10         return; 
11     }
12     ll t=1;
13     for(int i=0;i<=last;i++){
14         dfs(k+1,now*t,cnt*(last+1),i);
15         t*=pre[k];
16         if (now*t>n) return;
17     }
18 }
19  
20  
21 int main(){
22     scanf("%d",&n);
23     dfs(1,1,1,20);
24     printf("%lld",ans);
25 } 
26 

 

【BZOJ 1053】[HAOI2007]反素数ant

标签:

原文地址:http://www.cnblogs.com/wuminyan/p/5202598.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!