洛谷P1221 最多因子数 [搜索,数学]
最多因子数
目描述
数学家们喜欢各种类型的有奇怪特性的数。例如,他们认为945是一个有趣的数,因为它是第一个所有约数之和大于本身的奇数。
为了帮助他们寻找有趣的数,你将写一个程序扫描一定范围内的数,并确定在此范围内约数个数最多的那个数。不幸的是,这个数和给定的范围的都比较大,用简单的方法寻找可能需要较多的运行时间。所以请确定你的算法能在几秒内完成最大范围内的扫描。
输入输出格式
输入格式:
只有一行,给出扫描的范围,由下界L和上界U确定。满足2≤L≤U≤1000000000。
输出格式:
对于给定的范围,输出该范围内约数个数D最多的数P。若有多个,则输出最小的那个。请输出“Between L and U,P has a maximum of D divisors.”,其中L,U,P和D的含义同前面所述。
输入输出样例
1000 2000
Between 1000 and 2000, 1680 has a maximum of 40 divisors.
分析:
一道比较考验思维的搜索题。
直接一个个暴搜肯定不行,但是如果把一个数因数分解的话,$10^9$以内最多不会超过30个,那么我们可以考虑搜索质因子。把一个数表示成质因数幂的形式为:
$A=x_1^{p_1}*x_2^{p_2}*x_3^{p_3}*...*x_n^{p_n}$
则该数的约数个数为$(p_1+1)*(p_2+1)*(p_3+1)*...*(p_n+1)$,根据这个公式来检验当前答案是否最优。
不过要注意,数据中一个点131074会出锅,因为131074分解质因数是2×65537,我们搜索的时候只考虑100以内的质数(否则会T),所以需要特判一下。
当然这种做法很轻松就可以Hack掉,不过数据很水就是了(逃。
Code:
//It is made by HolseLee on 6th Aug 2018
//Luogu.org P1221
#include<bits/stdc++.h>
using namespace std; typedef long long ll;
ll L,R,ans,tot,c[];
ll s[]={,,,,,,,,,,,,,,,,,,,,,,,,,,}; inline void check(ll sum)
{
ll ret=;
for(int i=;i<=;++i)ret*=(c[i]+);
if(ret>tot)tot=ret,ans=sum;
if(ret==tot)ans=min(sum,ans);
} inline void dfs(ll sum,int sta)
{
if(sum>R)return;
if(sum>=L&&sum<=R)check(sum);
for(int i=sta;i<=;++i){
++c[i];
dfs(sum*s[i],i);
--c[i];
}
} int main()
{
scanf("%lld%lld",&L,&R);
if(L==R&&L==){
printf("Between %lld and %lld, %lld has a maximum of 4 divisors.",L,R,L);
return ;
}
dfs(,);
printf("Between %lld and %lld, %lld has a maximum of %lld divisors.",L,R,ans,tot);
return ;
}
洛谷P1221 最多因子数 [搜索,数学]的更多相关文章
- 【题解】洛谷P1120 小木棍(搜索+剪枝+卡常)
		
洛谷P1120:https://www.luogu.org/problemnew/show/P1120 思路 明显是搜索题嘛 但是这数据增强不是一星半点呐 我们需要N多的剪枝 PS:需要先删去超出50 ...
 - 洛谷 [BJOI2012]最多的方案
		
洛谷 这题是旁边同学介绍的,听他说记忆化搜索可以过... 不过我还是老老实实的想\(dp\)吧- 先看看数据范围,\(n\leq10^{18}\)相当于\(n \leq fib[86]\). 以前打\ ...
 - 【题解】洛谷P1731 [NOI1999] 生日蛋糕(搜索+剪枝)
		
洛谷P1731:https://www.luogu.org/problemnew/show/P1731 思路 三重剪枝 当前表面积+下一层表面积如果超过最优值就退出 当前体积+下一层体积如果超过总体积 ...
 - 洛谷P3951 小凯的疑惑 - 数学 /扩展欧几里得
		
传送门 题意:求出a和b不能通过线性组合(即n*a+m*b)得到的最大值: 思路:摘自洛谷: 不妨设 a<b 假设答案为 x 若 x≡m*a ( mod b )(1≤m≤b−1) (mod3)什 ...
 - 和小哥哥一起刷洛谷(5) 图论之深度优先搜索DFS
		
关于dfs dfs伪代码: void dfs(s){ for(int i=0;i<s的出度;i++){ if(used[i]为真) continue; used[i]=1; dfs(i); } ...
 - 和小哥哥一起刷洛谷(4) 图论之广度优先搜索BFS
		
关于bfs: 你怎么会连这个都不知道!!!自己好好谷歌一下!!!(其实我也刚学) bfs伪代码: while(队列非空){ 取出队首元素u; 弹出队首元素; u染色为黑色; for(int i=0;i ...
 - 洛谷P1514 引水入城 [搜索,区间DP]
		
题目传送门 引水入城 题目描述 在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠.该国的行政区划十分特殊,刚好构成一个 N 行×M 列的矩形,如上图所示,其中每个格子都代表一座城市,每 ...
 - 洛谷 P2689 东南西北【模拟/搜索】
		
题目描述 给出起点和终点的坐标及接下来T个时刻的风向(东南西北),每次可以选择顺风偏移1个单位或者停在原地.求到达终点的最少时间. 如果无法偏移至终点,输出“-1”. 输入输出格式 输入格式: 第一行 ...
 - 洛谷 - P2324 - 骑士精神 - A*搜索
		
为什么估价是16,因为最后一步复原空格可以恢复两个位置,当然设成17.18都可以. #include<bits/stdc++.h> using namespace std; typedef ...
 
随机推荐
- [DeeplearningAI笔记]卷积神经网络1.6-1.7构造多通道卷积神经网络
			
4.1卷积神经网络 觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.6多通道卷积 原理 对于一个多通道的卷积操作,可以将卷积核设置为一个立方体,则其从左上角开始向右移动然后向下移动,这里设 ...
 - tf.session.run()单函数运行和多函数运行区别
			
tf.session.run()单函数运行和多函数运行区别 觉得有用的话,欢迎一起讨论相互学习~Follow Me problem instruction sess.run([a,b]) # (1)同 ...
 - 理解PV操作和信号量
			
对于信号量,可以认为是一个仓库,有两个概念,容量和当前的货物个数. P操作从仓库拿货,如果仓库中没有货,线程一直等待,直到V操作,往仓库里添加了货物,为了避免P操作一直等待下去,会有一个超时时间. V ...
 - eclipse+myeclipse 使用技巧备忘
			
myeclipse 导入多模块maven项目 https://blog.csdn.net/jack85986370/article/details/51371853 maven项目在eclipse的l ...
 - spring mvc入门配置
			
现在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了.不过 ...
 - NOIP 2015 提高组 Day1
			
期望得分:100+100+100=300 实际得分:100+100+45=245 T3 相似的代码 复制过去 没有改全,痛失55分 http://www.cogs.pro/cogs/page/page ...
 - 接口自动化测试框架HttpRunner
			
接口自动化测试框架 https://github.com/HttpRunner/HttpRunner http://debugtalk.com/post/ApiTestEngine-api-test- ...
 - linux内核sysfs详解【转】
			
转自:http://blog.csdn.net/skyflying2012/article/details/11783847 "sysfs is a ram-based filesystem ...
 - B2旅游签证记
			
先去https://ceac.state.gov/ceac/,选择DS-160表格,在线申请登记个人信息 ,选择大事馆“CHINA BEIJING”和验证码,点 Start an Applicatio ...
 - 【bzoj5050】【bzoj九月月赛H】建造摩天楼
			
讲个笑话,这个题很休闲的. 大概是这样的,昨天看到这个题,第一眼星际把题目看反了然后感觉这是个傻逼题. 后来发现不对,这个修改一次的影响是很多的,可能导致一个数突然可以被改,也可能导致一个数不能被改. ...