概述
思路:
直接枚举每个约数的个数,然后乘起来比较
c o d e code code
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
unsigned long long n, ans=1e18, sum;
unsigned long long prime[13]={2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41};
void dfs(unsigned long long x, unsigned long long prod, unsigned long long maxx, unsigned long long sum1, unsigned long long sum2)
{
unsigned long long tmp=sum2*(sum1+1);
if(tmp>sum||(tmp==sum&&prod<ans))
sum=tmp, ans=prod;
if(sum1+1<=maxx&&prod*prime[x]<=n)
dfs(x, prod*prime[x], maxx, sum1+1, sum2);
if(prod*prime[x+1]<=n)
dfs(x+1, prod*prime[x+1], sum1, 1, sum2*(sum1+1));
}
int main()
{
cin>>n;
dfs(0, 1, 100, 0, 1);
cout<<ans;
return 0;
}
最后
以上就是个性指甲油为你收集整理的【YBTOJ进阶训练指导】最多约数【深搜】 c o d e code code的全部内容,希望文章能够帮你解决【YBTOJ进阶训练指导】最多约数【深搜】 c o d e code code所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复