洛谷 P1463、POI2002、HAOI2007 反素数
题意:
求最小的$x\in[1,N]$,使得$x$为$g(x)$最大的数 中最小的一个。
分析:
1.$x$不会有超过$10$个不同质因子。理由:$2 \times 3\times 5...\times 31>2\times 1e9$
$2\times 3\times 5...\times 29<2\times 1e9$。
$2$至$29$质数刚好$10$个。
2.质因子指数不会大于$30$。理由:当取最小的质因子$2$时,$231>2\times 1e9$,$230<2\times 1e9$。
3.若$x=p_1^{c_1}p_2^{c_2}...p_n^{c_n}$,则x的因子个数为$(c_1+1)(c_2+1)...(c_n+1)$。即:$g(x)=(c_1+1)(c_2+1)...(c_n+1)$。
4.质因子连续、指数不升。理由:反证法。若$x=p_1^{c_1}p_2^{c_2}...p_n^{c_n}$,且存在$p_{n-1}<p'<p_n$,则
$x_0=p_1^{c_1}p_2^{c_2}...p_{n-1}^{c_{n-1}}p'^c_n<x$
,$g(x_0)=g(x)$,不符合题意。
若存在$c_n>c_{n-1}$,则将$c_n$,$c_{n-1}$位置交换,也不符合题意
综上所述,可以用上述几个约束条件进行搜索剪枝。
代码就是简单的$DFS$。
#include<iostream>
#include<vector>
typedef long long ll;
using namespace std;
const ll pa[]={,,,,,,,,,,};
ll n,ans=,g=; void dfs(ll p,ll t,ll now,ll ng)
{
if(now>n) return;
if(p>) return;
ll temp=ng;
for(ll i=;i<=t;i++){
now*=pa[p];
ng=temp*(i+);
if(now>n) return;
if(ng>g) ans=now,g=ng;
if(ng==g) ans=min(now,ans);
dfs(p+,i,now,ng);
}
} signed main()
{
cin>>n;
dfs(,,,);
cout<<ans;
return ;
}
洛谷 P1463、POI2002、HAOI2007 反素数的更多相关文章
- 【题解】洛谷P1463 [POI2002][HAOI2007] 反素数(约数个数公式+搜索)
洛谷P1463:https://www.luogu.org/problemnew/show/P1463 思路 约数个数公式 ai为质因数分解的质数的指数 定理: 设m=2a1*3a2*...*pak ...
- 洛谷 P1463 [POI2002][HAOI2007]反素数
题目链接 题目描述 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4. 如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数.例如,整数1, ...
- Luogu P1463 [POI2002][HAOI2007]反素数【数论/dfs】By cellur925
题目传送门 题目描述 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4. 如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数.例如,整数1 ...
- [POI2002][HAOI2007]反素数
题意 反素数 想法 证明这样一个结论 对于一个可行的反素数\(p\) \(p = \sum_{i}^{k} p_{k} ^ {c_k}\) 当 \(p_i > p_j 有 c_i < c_ ...
- 数学结论【p1463】[POI2002][HAOI2007]反素数
Description 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4. 如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数.例如,整数 ...
- [POI2002][HAOI2007]反素数 数论 搜索 好题
题目描述: 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4. 如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数.例如,整数1,2,4, ...
- [POI2002][HAOI2007]反素数(Antiprime)
题目链接 这道题需要用到整数唯一分解定理以及约数个数的计算公式.这里我就不再阐述了. 公式可以看出,只有指数影响约数个数,那么在唯一分解出的乘式中,指数放置的任何位置都是等价的.(即 23*34*57 ...
- 【BZOJ1053】[HAOI2007]反素数
[BZOJ1053][HAOI2007]反素数 题面 bzoj 洛谷 题解 可以从反素数的定义看出小于等于\(x\)的最大反素数一定是约数个数最多且最小的那个 可以枚举所有的质因数来求反素数,但还是跑 ...
- 【BZOJ1053】[HAOI2007]反素数 (搜索+数论)
\([POI2002][HAOI2007]\)反素数 题目描述 对于任何正整数x,其约数的个数记作\(g(x)\).例如\(g(1)=1.g(6)=4\). 如果某个正整数x满足:\(g(x)> ...
- 【BZOJ1053】[HAOI2007]反素数(搜索)
[BZOJ1053][HAOI2007]反素数(搜索) 题面 BZOJ 洛谷 题解 大力猜一下用不了几个质因子,那么随便爆搜一下就好了. #include<iostream> #inclu ...
随机推荐
- oracle 使用db_link 导入导出小结
客户有一个需求,是将一个库中的某个用户迁移到一台新的oracle服务器上,因数据量较小,并且不涉及版本的升级,所以可以采用创建一个dblink,然后通过这个dblink直接从源库将用户数据导出并导入到 ...
- Angucomplete —— AngularJS 自动完成输入框
分享 <关于我> 分享 [中文纪录片]互联网时代 http://pan.baidu.com/s/1qWkJfcS 分享 <HTML开发MacOSAp ...
- Spring Boot:整合MyBatis框架
综合概述 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单 ...
- 【JDK】ArrayList集合 源码阅读
这是博主第二次读ArrayList 源码,第一次是在很久之前了,当时读起来有些费劲,记得那时候HashMap的源码还是哈希表+链表的数据结构. 时隔多年,再次阅读起来ArrayList感觉还蛮简单的, ...
- 在linux中,&和&&, |和|| ,&> 与 >的区别
对应刚接触linux命令的小伙伴们来说,这些符号一定是很困扰的下面我们一起来看这些符号区别和用法 & 表示任务在后台执行,如要在后台运行 如: [root@localhost local]# ...
- centOS7.3 6忘记密码/修改root密码
RedHat最近升级了centos linux操作系统,更新为centos7,更新幅度之大,连红帽官方的认证RHCE也进行了升级,认证必须使用rhel7,可见红帽官方对centos7的重视程度. 最新 ...
- Linux系统:centos7下安装Jdk8、Tomcat8、MySQL5.7环境
一.JDK1.8 环境搭建 1.上传文件解压 [root@localhost mysoft]# tar -zxvf jdk-8u161-linux-x64.tar.gz [root@localhost ...
- 微服务-springboot-activiti工作流
idea中安装aciviti并使用,链接地址:https://blog.csdn.net/qq_41728540/article/details/79506463 一.创建springboot项目,勾 ...
- POJ 1966:Cable TV Network(最小点割集)***
http://poj.org/problem?id=1966 题意:给出一个由n个点,m条边组成的无向图.求最少去掉多少点才能使得图中存在两点,它们之间不连通. 思路:将点i拆成a和b,连一条a-&g ...
- HDU 3338:Kakuro Extension(脑洞大开的网络流)
http://acm.hdu.edu.cn/showproblem.php?pid=3338 题意:在一个n*m的地图里面,有黑方块和白方块,黑方块可能是“XXXXXXX”或者“YYY/YYY”,这里 ...