【BZOJ1503】[HAOI2007]反素数ant 搜索

时间:2023-03-08 20:45:05

结论题。。。网上讲的好的很多。。。

 #include <iostream>
using namespace std;
int p[]={,,,,,,,,,},num=;
long long ans,n;
void dfs(int x,int y,long long z)
{
if (y>num) {num=y; ans=;}
if (y==num) ans=min(ans,z);
if (x>=) return;
for (int i=;z<=n;z*=p[x],++i) dfs(x+,y*(i+),z);
}
int main()
{
cin>>n;
dfs(,,);
cout<<ans;
return ;
}

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