做本地旅游网站,做网站的一般多钱,文创产品网站,深圳代理记账公司电话题意#xff1a;求1~n范围里约数的约数的个数加起来最多的是哪个数 及其总数 题解#xff1a; /*
对一个数质因数分解
首先要知道两个公式#xff1a;约数的个数的公式#xff0c;和约数的约数的个数的公式(详见题解)
然后发现#xff1a;质因数分解后 小的次冥尽量大 会… 题意求1~n范围里约数的约数的个数加起来最多的是哪个数 及其总数 题解 /*
对一个数质因数分解
首先要知道两个公式约数的个数的公式和约数的约数的个数的公式(详见题解)
然后发现质因数分解后 小的次冥尽量大 会使答案更优 然后使次幂单调不升 dfs求r序列
*/
#includebits/stdc.h
using namespace std;
#define ll long long
int pri[]{2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53};
ll ans,maxn0,n,ans2;
void dfs(int pos,ll sum,ll tot,int last)//dfs每一层乘一个质因子 质因子的数目枚举决定
{if(sum0) return ;//tot相同的同时ans要尽量小 if(totmaxn||(totmaxnsumans)) anssum,maxntot;for(int i1;ilastsumn/pri[pos];i){//不能打sum*pri[pos]n 因为有可能会爆long long变成负数 sum*pri[pos];if(sumn||sum0) return ;dfs(pos1,sum,tot*(i1)*(i2)/2,i);}}
int main()
{freopen(b.in,r,stdin);freopen(b.out,w,stdout);scanf(%lld,n);dfs(0,1,1,999);printf(%lld\n%lld\n,ans,maxn);
}
/*
727793906583744000
*/ 转载于:https://www.cnblogs.com/mowanying/p/11266573.html