洛谷 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 ...
随机推荐
- 使用内核对象Mutex可以防止同一个进程运行两次
用互斥法实现防止程序重复运行,使用内核对象Mutex可以防止同一个进程运行两次.注意:是名称相同的进程,而不是exe,因为exe程序可以改名. using System.Threading; publ ...
- ToolBarTray与ToolBarPanel的区别
ToolBarTray 类:表示处理ToolBar 的布局的容器.用于ToolBar控件模板之中. e.g. <ToolBarTray> <ToolBar> <Butto ...
- [Leetcode]Single Number && Single Number II
Given an array of integers, every element appears twice except for one. Find that single one. 非常简单的一 ...
- Delphi 与 VC 共享接口和对象
我经常会用 Delphi 写一些工具和应用,为了扩展方便,大部分都会做成插件形式. 迫于某些原因,我的插件不得不用其他开发工具来完成,比如 VC. 于是有个大问题需要解决:如何让 D 和 VC 互相通 ...
- 使用PyQt5编写一个简单的GUI程序(pyside 有 pyside-uic 把ui文件转成py文件,pyside-rcc 把qrc文件转成 py文件导入就行了)
我做Python窗口界面编程时,经常使用PyQt进行设计.这里简单叙述一下使用PyQt5制作一个简单的图形界面的流程 PyQt的简介以及开发环境的搭建在此不多赘述. 1. 打开Qt Des ...
- 利用POi3.8导出excel产生大量xml临时文件怎么办?
在实际项目中,经常会用到POI3.8来导出excel.而导出excel的时候,会因为残留大量以.xml结尾的文件而导致服务器存储空间急剧增长,最后导致系统挂了.为此,该怎么办呢? .xml后缀残留文件 ...
- java之继承中的静态变量
package Test; /** * Created by wangbin10 on 2018/7/9. * 我们知道静态变量属于类级别变量,对应每个类只有一份,类的所有实例共有一份,而成员变量则分 ...
- Linux上read命令的使用
一:read倾听是一种美德 1.倾听键盘的输入并保存到变量中 例如:#! /bin/bash echo "please inpu ...
- IIS 站点和应用池命令启动和停止
在CMD下执行如下命令: IIS站点: 停止站点: C:\Windows\System32\inetsrv\appcmd.exe stop site “XXXX” 启动站点: C:\Windows\S ...
- 关于Git 的管理凭据操作
1.桌面-->2.我的电脑-->3.右击选择属性-->4.控制面板主页-->5.在用户账户和家庭安全下,选择添加或删除用户账户-->转到“主用户账户”页面-->6. ...