【HAOI2007】反素数
【题目链接】
【算法】
稍加分析可知,问题等价于“求1到n中,因子个数最多的数,若有多个,求最小的”
那么我们该怎么求这个数呢?
约数个数定理 : x = p1^a1p2^a2p3^a3...pn^an
则x的约数个数为 : (a1 + 1)(a2 + 1)(a3 + 1) ... (an + 1)
我们发现,一定有 : a1 >= a2 >= a3 >= ... an,也就是说,a是一个降序的排列
同时,我们发现,如果我们希望让这个数的因子尽可能多,那么p1...pn要尽可能的小
只需将前10个素数存在一张表内,然后dfs即可
【代码】
#include<bits/stdc++.h>
using namespace std; long long i,n,num = 1e18,ans;
long long prime[] = {,,,,,,,,,,}; template <typename T> inline void read(T &x) {
long long f = ; x = ;
char c = getchar();
for (; !isdigit(c); c = getchar()) { if (c == '-') f = -f; }
for (; isdigit(c); c = getchar()) x = (x << ) + (x << ) + c - '';
x *= f;
}
template <typename T> inline void write(T x) {
if (x < ) { putchar('-'); x = -x; }
if (x > ) write(x/);
putchar(x%+'');
}
template <typename T> inline void writeln(T x) {
write(x);
puts("");
}
inline void dfs(long long dep,long long last,long long sum,long long cnt) {
long long i;
if (sum > n) return;
if ((cnt > ans) || ((cnt == ans) && (sum < num))) {
ans = cnt;
num = sum;
}
if (!last) return;
for (i = ; i <= last; i++) {
dfs(dep+,i,sum,cnt*(i+));
sum *= prime[dep];
if (sum > n) return;
}
} int main() { read(n);
dfs(,,,);
writeln(num); return ;
}
【HAOI2007】反素数的更多相关文章
- 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 ... 
- 【BZOJ1053】[HAOI2007]反素数
		[BZOJ1053][HAOI2007]反素数 题面 bzoj 洛谷 题解 可以从反素数的定义看出小于等于\(x\)的最大反素数一定是约数个数最多且最小的那个 可以枚举所有的质因数来求反素数,但还是跑 ... 
- 【BZOJ 1053】 1053: [HAOI2007]反素数ant (反素数)
		1053: [HAOI2007]反素数ant Description 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4.如果某个正整数x满足:g(x)>g(i) 0&l ... 
随机推荐
- PTA 04-树5 Root of AVL Tree   (25分)
			题目地址 https://pta.patest.cn/pta/test/16/exam/4/question/668 5-6 Root of AVL Tree (25分) An AVL tree ... 
- HDU 2222 最简单的AC自动机套模板应用
			HDU 2222 题意:给出N(N<=10,000)个单词,每个单词长度不超过50.再给出一个字符串S,字符串长度不超过1,000,000.问有多少个单词出现在了字符串S中.(单词可能重复,单词 ... 
- hdu   4474
			//因为n是小于等于10000可以利用这点进行搜索对n取余则余数为零时就为所找的.因为他的余数肯定小于10000所以不会无休止下去 #include<stdio.h> #include&l ... 
- hdu   2686最小费用最大流问题
			#include<stdio.h> #include<queue> #include<string.h> using namespace std; #define ... 
- [转]制作一个64M的U盘启动盘(mini linux + winpe +dos toolbox)
			自己动手定制winpe+各类dos工具箱U盘启动盘+minilinux 由于一个64M老U盘,没什么用,拿来发挥余热.如果U盘够大,可以使用功能更强大的mini linux和带更多工具的winpe.这 ... 
- jQuery根据属性模糊匹配元素
			1.查看带有指定属性的元素: [attribute] 例如: $("div[id]") 2.查看属性值是某个特定值的元素: [attribute=value] 例如: $(&quo ... 
- vs2010 静态使用 opencv 2.46 库
			下载opencv2.46的库,假设解压到OpenCV246,设置如下: 在工程的c++的include目录下添加:OpenCV246\opencv\build\include 在工程的c++的lib目 ... 
- 前端学习之--CSS
			CSS 常用帮助文档 CSS:被用来同时控制多重网页的样式和布局.HTML页面中CSS样式的写法有3种: 1:标签中写入 <body style='margin o auto;'> 2:h ... 
- tyvj——P3524 最大半连通子图
			P3524 最大半连通子图 时间: 3000ms / 空间: 165536KiB / Java类名: Main 描述 输入格式 第一行包含两个整数N,M,X.N,M分别表示图G的点数与边数,X的意义如 ... 
- 实现浏览器兼容的innerText
			今天学习到了FF不支持innerText,而IE.chrome.Safari.opera均支持innerText. 为了各个浏览器能兼容innerText,必须对js做一次封装. 为啥能实现兼容呢?原 ... 
