1053: [HAOI2007]反素数ant
Time Limit: 10 Sec Memory Limit: 162 MB
Submit: 5027 Solved: 3053
[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
[Submit][Status][Discuss]
HOME Back
请看:
https://www.cnblogs.com/AlphaWA/p/10218102.html
ll n;
ll CNT;
ll ans=0;
ll p[20]={2,3,5,7,11,13,17,19,23,29,31};
void dfs(ll step,ll x,ll cnt,ll last){
if(step==10){
if(cnt>CNT ||(cnt==CNT and x<ans)){
ans=x;
CNT=cnt;
}
return ;
}
ll res=1;
for(ll i=0;i<=last;i++){
if(x*res>n)break;
dfs(step+1,x*res,cnt*(i+1),i);
res*=p[step];
}
}
signed main() {
#ifdef local
freopen("input2.txt","r",stdin);
#endif //local
cin>>n;
dfs(0,1,1,31);
cout<<ans<<en;
return 0;
}