[HAOI2007]反素数
嘟嘟嘟
做这道题得自己推出这么几个结论……
1.最大的反素数一定是约数个数最多的的数中最小的那个。
这个其实很好想:根据定义,g(x)要大于任意的g(i),而不是大于等于。
2.1~n中任意一个数的不同的质因子不会超过10个,且所有质因子的指数之和不会大于30.
最小的10个质数的乘积刚好大于231了,而231 > 2 * 109。
3.把x分解质因数:x = 2a1 * 3a2 * 5a3 * 7a4 * …… * 29a10,一定满足a1 >= a2 >= a3 >= …… >= a10.
证明用反证法。假设x中有一项pk(p > 29),那么=根据第二条结论,前10个质数中一定有一个p'不能整除x,那么我们应该用p'代替p,因为这即保证了约数相等,新的数又更小。
知道这几条结论后,一波爆搜就行了。
(爆搜我写的特别丑,是在不行了再看我的吧)
1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 #include<cmath> 5 #include<cstring> 6 #include<cstdlib> 7 #include<cctype> 8 #include<stack> 9 #include<queue> 10 #include<vector> 11 using namespace std; 12 #define enter puts("") 13 #define space putchar(' ') 14 #define Mem(a, x) memset(a, x, sizeof(a)) 15 #define rg register 16 typedef long long ll; 17 typedef double db; 18 const int INF = 0x3f3f3f3f; 19 const db eps = 1e-8; 20 //const int maxn = ; 21 inline ll read() 22 { 23 ll ans = 0; 24 char ch = getchar(), las = ' '; 25 while(!isdigit(ch)) las = ch, ch = getchar(); 26 while(isdigit(ch)) ans = ans * 10 + ch - '0', ch = getchar(); 27 if(las == '-') ans = -ans; 28 return ans; 29 } 30 inline void write(ll x) 31 { 32 if(x < 0) putchar('-'), x = -x; 33 if(x >= 10) write(x / 10); 34 putchar(x % 10 + '0'); 35 } 36 37 ll n; 38 const int a[] = {0, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29}; //num = 10 39 ll ans1 = 0, ans = (ll)INF * (ll)INF; 40 41 void dfs(ll now, int id, int sum, int Max, int tot, ll x) 42 { 43 if(!tot || now > n || id > 11) return; 44 if(x > ans1 ||(x == ans1 && now < ans)) ans1 = x, ans = now; 45 ll tp = 1; 46 for(int i = 1; i <= min(tot, Max); ++i) 47 { 48 tp *= a[id]; 49 if(tp > n) break; 50 dfs(now * tp, id + 1, sum + i, i, tot - i, x * (i + 1)); 51 } 52 } 53 54 int main() 55 { 56 n = read(); 57 dfs(1, 1, 0, INF, 30, 1); 58 write(ans); 59 return 0; 60 }
View Code
转载于:https://www.cnblogs.com/mrclr/p/9756947.html
[HAOI2007]反素数相关推荐
- BZOJ(8) 1053: [HAOI2007]反素数ant
1053: [HAOI2007]反素数ant Time Limit: 10 Sec Memory Limit: 162 MB Submit: 4118 Solved: 2453 [Submit][ ...
- BZOJ 1053 [HAOI2007]反素数ant
53: [HAOI2007]反素数ant Description 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4.如果某个正整数x满足:g(x)>g(i) 0< ...
- bzoj1053: [HAOI2007]反素数ant
51nod有一道类似的题...我至今仍然不会写暴搜!!! #include<cstdio> #include<cstring> #include<iostream> ...
- [HAOI2007]反素数ant
1053: [HAOI2007]反素数ant Time Limit: 10 Sec Memory Limit: 162 MB Submit: 1907 Solved: 1069 [Submit][ ...
- P1463 [POI2001][HAOI2007]反素数 题解
P1463 [POI2001][HAOI2007]反素数 题解 题意分析 首先这是一个数论题 S o l u t i o n \tt Solution Solution 根据数据分析得出 2 9 &l ...
- 洛谷P1463 [POI2001][HAOI2007]反素数
P1463 [POI2001][HAOI2007]反素数 详解见代码注释 #include <bits/stdc++.h> using namespace std; const int N ...
- AcWing 198. [HAOI2007] 反素数 约数个数+dfs
题 参考 约数个数:每个质因数的次数+1的乘积. 2e9<2x3x5x7x11x13x17x19x23; 2e9<pow(2,31); last其实是最多扫30次. #include< ...
- bzoj 1053: [HAOI2007]反素数ant 51nod-1060:最复杂的数(反素数与因数个数计算)
问题概述:把一个数的约数个数定义为该数的复杂程度,给出一个n,求1-n中复杂程度最高的那个数. 例如:12的约数为:1 2 3 4 6 12,共6个数,所以12的复杂程度是6.如果有多个数复杂度相等, ...
- [POI2002][HAOI2007]反素数
https://www.lydsy.com/JudgeOnline/problem.php?id=1053 https://www.luogu.org/problemnew/show/P1463 定义 ...
最新文章
- arcgisserver修改服务器地址,ArcGIS for Server默认端口6080修改
- 使用OpenCV的findContours获取轮廓并切割(python)
- Python切分图像小案例(1、3、2、4象限子图互换)
- Linux学习之Vi编辑器常用命令
- 在ComboBox控件中使用嵌入字体。
- 智能合约从入门到精通:调用数据的布局和ABI
- springboot2.3.4集成EhCache缓存框架完整代码
- 【bzoj3329】Xorequ 数位dp+矩阵乘法
- 【kafka】kafka DefaultRecordBatch. The older message format classes only support conversion from class
- 斗拱展开面积表_144996_河南省仿古建筑工程计价综合单价2009
- 使用Scrapy,帮你快速抓取网页数据(代码可下载)!
- 一分钟搞懂的算法之BPE算法
- 开源游戏java引擎_基于Java的开源3D游戏引擎jMonkeyEngine
- 网络工程师笔记--网络管理技术
- editormd 支持拖放上传图片和视频
- SLAM 学习笔记 本质矩阵E、基础矩阵F、单应矩阵H的推导
- Codevs 1253 超级市场
- 安装CUDA时报错packages have unmet dependencies的一个可能原因
- 查看电脑连接过的无线网密码
- selenium使用webdriver自动化浏览器打不开无法输入网址
热门文章
- 具有搜索和自定义分页的React Bootstrap表
- PIR 宣布被营利性机构收购,.org 顶级域名注册费用或上涨
- Ubuntu 20.04 LTS 开发周期的重要任务:移除 Python 2
- 发现Tensorflow
- 12c安装默认密码_如何安装MySQL数据库和navicat客户端?
- 需要用sq语句 修改大批量用户的密码_网站文章seo优化及修改已收录文章建议
- ionic4的input调用手机键盘将换行改成搜索
- java 访问频率限制_配置URL的访问频率限制
- Execution default of goal org.springframework.boot:spring-boot-maven-plugin
- Javascript中 != 和 !==的区别