luogu1463 [HAOI2007]反素数
以下证明来自算法竞赛进阶指南
引理一: 答案就是 \([1,n]\) 之间约数个数最多的最小的数。
证明: 记 \(m\) 是 \([1,n]\) 之间约数个数最多的最小的数。则
- \(\forall i \in [1,m-1],g(i)<g(m)\);
- \(\forall i \in [m+1,n],g(m) \geq g(i)\)。
(1)说明 \(m\) 是一个反质数,(2)说明 \(m\) 以后的数都不是反质数。证毕。
引理二: \([1,n]\) 间的任何数不同质因子个数不会超过十个。
证明: \(2 \times 3 \times 5 \times 7 \times 11 \times 13 \times 17 \times 19 \times 23 \times 29 \times 31=200560490130\)。
所以也有所有指数和不超过 \(30\),因为 \(2^{30}>2 \times 10^9\)。
引理三: 答案必能表示成 \(2^{c_1} \times 3^{c_2} \times 5^{c_3} \times 7^{c_4} \times 11^{c_5} \times 13^{c_6} \times 17^{c_7} \times 19^{c_8} \times 23^{c_9} \times 29^{c_{10}}\)。且对于 \(i < j\)总有 \(c_i \geq c_j\)。\(c_i \geq 0\)。
证明: 倘若分解下来有个底数不属于这十个质数,记这个底数的幂为 \(p^c\),那么这十个质数里头必定有一个及以上的数不为答案的因子。记这个数为 \(q\),那么 \(q^c \times m/p^c\)约数个数和原答案相同且更优。
若对于 \(i < j\)有 \(c_i < c_j\),则可用交换指数的方法证明之。
然后 dfs 指数即可。
#include <iostream>
#include <cstdio>
using namespace std;
int n, ans, hmn;
typedef long long ll;
const int pri[]={0, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29};
void dfs(int x, int l, ll num, int yue){
if(x==11){
if(hmn<yue) hmn = yue, ans = num;
else if(hmn==yue && ans>num) ans = num;
return ;
}
int t=1;
for(int i=0; i<=l; i++){
dfs(x+1, i, num*t, yue*(i+1));
t *= pri[x];
if(num*t>n) break;
}
}
int main(){
cin>>n;
ans = 2000000005;
dfs(1, 30, 1, 1);
cout<<ans<<endl;
return 0;
}
luogu1463 [HAOI2007]反素数的更多相关文章
- [luogu1463 HAOI2007] 反素数 (约数)
传送门 Description 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4. 如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数.例 ...
- BZOJ 1053: [HAOI2007]反素数ant dfs
1053: [HAOI2007]反素数ant 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=1053 Description 对于任何正整 ...
- bzoj1053: [HAOI2007]反素数ant
51nod有一道类似的题...我至今仍然不会写暴搜!!! #include<cstdio> #include<cstring> #include<iostream> ...
- HAOI2007反素数
1053: [HAOI2007]反素数ant Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1346 Solved: 732[Submit][Sta ...
- 【BZOJ】1053: [HAOI2007]反素数ant
1053: [HAOI2007]反素数ant Description: g(x)表示x的约数个数,反素数:对于任意的i (i < x),均有g(i) < g(x),则x为反素数:现在输入不 ...
- bzoj 1053: [HAOI2007]反素数ant 搜索
1053: [HAOI2007]反素数ant Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1497 Solved: 821[Submit][Sta ...
- BZOJ 1053 [HAOI2007]反素数ant
1053: [HAOI2007]反素数ant Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1948 Solved: 1094[Submit][St ...
- 1053: [HAOI2007]反素数ant
1053: [HAOI2007]反素数ant Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3480 Solved: 2036[Submit][St ...
- 【BZOJ1053】[HAOI2007]反素数(搜索)
[BZOJ1053][HAOI2007]反素数(搜索) 题面 BZOJ 洛谷 题解 大力猜一下用不了几个质因子,那么随便爆搜一下就好了. #include<iostream> #inclu ...
随机推荐
- Helvetic Coding Contest 2017 online mirror (teams allowed, unrated) A
Description Your search for Heidi is over – you finally found her at a library, dressed up as a huma ...
- Codeforces Round #395 (Div. 2) A
Description Comrade Dujikov is busy choosing artists for Timofey's birthday and is recieving calls f ...
- Jury Meeting CodeForces - 854D
Jury Meeting CodeForces - 854D 思路:暴力枚举会议开始的那一天(只需用所有向0点飞的航班的那一天+1去枚举即可),并计算所有人此情况下去0点和从0点出来的最小花费. 具体 ...
- OkHttp下载文件中途断网报Can't create handler inside thread that has not called Looper.prepare()异常的解决办法
最近做项目时出现个问题. 在一个基类中,创建一个Handler对象用于主线程向子线程发送数据,代码如下: this.mThirdHandler = new Handler(){ @Override p ...
- HDU 1423 LICS 模板
http://acm.hdu.edu.cn/showproblem.php?pid=1423 4.LICS.O(lena * lenb) 设dp[i][j]表示a[]的前i项,以b[]的第j项结尾时, ...
- CentOS Linux下MySQL 5.1.x的安装、优化和安全配置
下载页面:http://dev.mysql.com/downloads/mysql/5.1.html#downloads 到页面底部,找到Source downloads,这个是源码版本,下载第1个T ...
- 为localhost添加https
1.按照https://stackoverflow.com/a/7184031/4619958来做 其中,CommonName填写localhost 2.在ssl.conf里头加上 <Direc ...
- iframe及其引出的页面跳转问题
前提:在前一段的工作中碰到了一些页面跳转,子页面跳到父页面上的等等问题,当时页面总是跳不对,或者跳错,要不就是不需要重新打开窗口,却又重新打开一个了,特此搜寻网上各大博客论坛,加上项目经验整理一篇文章 ...
- 【学习笔记】using namespace std 的作用
C++编程时几乎每次都敲上using namespace std;但这行代码究竟有什么作用呢? C++标准程序库中的所有标识符都被定义于一个名为std的namespace中. 早些的编码将标准库功能定 ...
- android开发哪些坑需要注意
同一个应用的JNI代码,不要轻易换NDK编译的版本,否则会有很多问题(主要是一些方法实现不一样,并且高版本对代码的检测更严格),比如r8没有问题,但到r9就有问题了,这是个大坑: Android的JN ...