[POI2002][HAOI2007]反素数 数论 搜索 好题
题目描述:
对于任何正整数x,其约数的个数记作g(x)。例如g(1)=1、g(6)=4。
如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数。例如,整数1,2,4,6等都是反质数。
现在给定一个数N,你能求出不超过N的最大的反质数么?
题解:
显然,我们要求的是 $[1,N]$ 中约数个数最多且该数字最小的值。
根据约数个数公式:$ans=(p_{1}+1)(p_{2}+1)(p_{3}+1)...$,其中 $p_{i}$ 为第 $i$ 个素因子的幂次。
所以我们只需枚举素因子以及素因子的幂次即可。
考虑搜索:
我们有几个剪枝条件:
1.幂次肯定递减(这个自己想想就能明白)
2.我们一般只会用到前30个素数(这个就靠猜测了)
3.由于 $N<=2e9$,我们最多只会用到 12 个左右的不同数字相乘。
根据这些剪枝条件,我们进行搜索即可。
Code:
#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long ll;
int prime[]={0,2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,51,53};
ll n, maxn;
int cur;
void dfs(int dep,ll m,int t,int p){ //上一个指数
if(dep==12){
if(t>=cur){
if(t>cur) maxn=m, cur=t;
else if(m<maxn) maxn=m;
}
return;
}
ll cnt=1;
for(int i=0;i<=p;++i){
dfs(dep+1,m*cnt,t*(i+1),i);
cnt*=prime[dep];
if(m*cnt>n) break;
}
}
int main(){
//freopen("input.in","r",stdin);
scanf("%lld",&n);
dfs(1,1,1,30);
printf("%lld",maxn);
return 0;
}
[POI2002][HAOI2007]反素数 数论 搜索 好题的更多相关文章
- 【BZOJ1053】[HAOI2007]反素数(搜索)
[BZOJ1053][HAOI2007]反素数(搜索) 题面 BZOJ 洛谷 题解 大力猜一下用不了几个质因子,那么随便爆搜一下就好了. #include<iostream> #inclu ...
- 【BZOJ1053】[HAOI2007]反素数 (搜索+数论)
\([POI2002][HAOI2007]\)反素数 题目描述 对于任何正整数x,其约数的个数记作\(g(x)\).例如\(g(1)=1.g(6)=4\). 如果某个正整数x满足:\(g(x)> ...
- bzoj 1053: [HAOI2007]反素数ant 搜索
1053: [HAOI2007]反素数ant Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1497 Solved: 821[Submit][Sta ...
- 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 ...
- [BZOJ1053] [HAOI2007] 反素数ant (搜索)
Description 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4. 如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数.例如,整数 ...
- 数学结论【p1463】[POI2002][HAOI2007]反素数
Description 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4. 如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数.例如,整数 ...
- 洛谷 P1463 [POI2002][HAOI2007]反素数
题目链接 题目描述 对于任何正整数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] 反素数(约数个数公式+搜索)
洛谷P1463:https://www.luogu.org/problemnew/show/P1463 思路 约数个数公式 ai为质因数分解的质数的指数 定理: 设m=2a1*3a2*...*pak ...
随机推荐
- zzulioj--1780--和尚特烦恼6——炒股(贪心)
1780: 和尚特烦恼6--炒股 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 154 Solved: 87 SubmitStatusWeb Boa ...
- HTML与CSS学习记录
title: HTML与CSS学习记录 toc: true date: 2018-09-10 14:04:59 <HTML与CSS进阶教程读书笔记> HTML基础知识 HTML与XHTML ...
- quartz.net定时任务框架详解
C#做定时任务:一是Timer:而是Quartz.net:本文就学习一下Quartz.net框架 Quartz.net非常的灵活,开发人员能用很少的代码就能完成“每隔一小时执行”.“每天2点执行”.“ ...
- (转载) 清理缓存 IPackageStatsObserver
清理缓存 IPackageStatsObserver 2016-04-10 13:40 2288人阅读 评论(0) 收藏 举报 分类: android(59) 版权声明:本文为博主原创文章,未经博 ...
- 利用canvas制作简单的logo
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- QT笔记 -- (2) 文件相关操作、中文路径乱码
1.显示文件对话框,选择一个目录,显示选中目录中的所有图片的代码如下 主要class: QFileDialog QStringList QFileInfoList QDir void open(){ ...
- angular.js学习-ng-grid
ng-grid是基于AngularJS和JQuery的富表格控件,由AngularUI Team领衔开发,到目前为止已有2354次Commit,1076个Fork. AngualrUI:http:/ ...
- 接口测试工具篇--jmeter
jmeter的安装及使用在这里不进行讲解了,网上有很多资料 下面开始讲解如何使用jmeter做http接口测试 在jmeter中添加一个http请求,添加方式:测试计划上邮件添加线程组,线程组上邮件选 ...
- Web前端为什么这么火爆?
Web前端为什么这么火爆? 互联网发展到今天,全球已有28.9亿互联网用户,中国有355万网站,6.5亿网民,13亿手机用户,5亿微信用户,当步入互联网+时代后,互联网已经越来越复杂,纷繁复杂的互联网 ...
- 路飞学城Python-Day11
[44.函数-生成器] 需求:有一个列表 [0,1,2,3,4,5,6,7,8,9],对这个列表循环+1 li = [0,1,2,3,4,5,6,7,8,9] li = map(lambda x:x+ ...