首页 > 代码库 > bzoj1053: [HAOI2007]反素数ant
bzoj1053: [HAOI2007]反素数ant
51nod有一道类似的题。。。我至今仍然不会写暴搜!!!
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;#define rep(i,s,t) for(int i=s;i<=t;i++)#define dwn(i,s,t) for(int i=s;i>=t;i--)#define clr(x,c) memset(x,c,sizeof(x))#define ll long longconst ll a[]={0,2,3,5,7,11,13,17,19,23,29,31,37};ll ans,res,n;void dfs(ll x,ll num,ll sum,ll cnt,ll p){ //printf("%d %d %d %d %d\n",x,num,sum,cnt,p); if(res==cnt*(num+1)&&ans>sum){//这里应该让ans尽量小。 ans=sum; } if(res<cnt*(num+1)){ ans=sum,res=cnt*(num+1); } if(num+1<=p&&sum*a[x]<=n) dfs(x,num+1,sum*a[x],cnt,p); rep(i,x+1,12){ if(sum*a[i]<=n) dfs(i,1,sum*a[i],cnt*(num+1),num); }}int main(){ scanf("%lld",&n); dfs(1,0,1,1,100);//当前数,num,当前数的乘积,约数和,前一个数的个数。 printf("%lld\n",ans); return 0; }
1053: [HAOI2007]反素数ant
Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2714 Solved: 1536
[Submit][Status][Discuss]
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
HINT
Source
bzoj1053: [HAOI2007]反素数ant
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。