【BZOJ1053】[HAOI2007]反素数(搜索)

【BZOJ1053】[HAOI2007]反素数(搜索)

题面

BZOJ
洛谷

题解

大力猜一下用不了几个质因子,那么随便爆搜一下就好了。

#include<iostream>
#include<cstdio>
using namespace std;
int pri[15]={0,2,3,5,7,11,13,17,19,23,29,31,37,41,43};
int ans,d,n;
void dfs(int x,int s,int D)
{
	if(x==15){if(d<D||(d==D&&ans>s))ans=s,d=D;return;}
	for(int i=1,p=1;1ll*p*s<=n;++i,p*=pri[x])
	{
		dfs(x+1,s*p,D*i);
		if(1ll*p*pri[x]>n)break;
	}
}
int main()
{
	cin>>n;dfs(1,1,1);
	printf("%d
",ans);
	return 0;
}
原文地址:https://www.cnblogs.com/cjyyb/p/9727001.html