我是靠谱客的博主 个性指甲油,最近开发中收集的这篇文章主要介绍【YBTOJ进阶训练指导】最多约数【深搜】 c o d e code code,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在这里插入图片描述

思路:

直接枚举每个约数的个数,然后乘起来比较

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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部