题目传送门loj
一个数质因子个数最多有十个(我也不造为啥哈)
如果当前数的质因子个数与你储存的数的质因子个数相等,那么应该留下较小的数(这个大的数就不是A数了)
枚举一下每个质因子的范围
代码
#include <iostream>
#include <cstdio>
#define LL long long
using namespace std;
LL n,ans,s;
int a[20]={0,2,3,5,7,11,13,17,19,23,29};
void zr(LL x,LL y,LL k,LL g)
{
if(x==11) return;
LL t=1;
for(LL i=1;i<=k;i++){
t*=a[x];
if(y*t>n) return;
if(g*(i+1)==s&&y*t<ans) ans=y*t;
if(g*(i+1)>s) ans=y*t,s=g*(i+1);
zr(x+1,y*t,i,g*(i+1));
}
}
int main()
{
cin>>n;
zr(1,1,31,1);
cout<<ans;
return 0;
}