Description
  对于任何正整数x,其约数的个数记作g(x)。例如g(1)=1、g(6)=4。如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数。例如,整数1,2,4,6等都是反质数。现在给定一个数N,你能求出不超过N的最大的反质数么
 
Input
  一个数N(1<=N<=2,000,000,000)。
Output
  不超过N的最大的反质数。
Sample Input
1000
Sample Output
840
 
这道题博主们都直觉证明法搞得我这种蒟蒻怀疑自己的正确性了好吧……我们一起来证一证。
 
 一是尽可能取约数数目大的,然后如果数量相同只能取最小的那个才算保证了反质数,这个地方不多说;
 
二是不同的质因子(2,3,5,……)不会超过10个,因为2*3*5*……*29*31爆int了,而29是第10个。
 
三是反质数的因子一定是2、3、5、……、23、29里面选的,不会存在31以后的。原因:选了31及以上的,就注定有0~29的要选不上(根据第二条)。那么举例来说,如果是选了31而没选2,那这个数除掉31再乘上2^4显然可以得到更多约数吧;如果是选了31而没选29,那这个数除掉31再乘29,约数个数没变,数却变小了,显然刚才那个31的不是反质数(根据定义)。为什么29、23这种的就没问题而31就不可以呢?因为选29和选2不冲突啊~
 
四是把数唯一分解成2^c1 * 3^c2 * 5^c3 * …… * 29^c10的话,c1 >= c2 >= c3 >=……>=c10。原因:我们知道约数总个数用乘法原理组合计算一下为(c1+1)*(c2+1)*……(c10+1),这个+1证明时用不上啦,那就di = ci + 1吧,即d3 = c3+1。约数数量就是d1*d2*d3*……*d10了。不失一般性地我们在这里举例描述吧,假设d3 > d1,那么如果存在一个正整数x <= d3,使得(d1+x)*(d3-x)>=d1*d3,则当前这个数不是反质数。上式的意义是:如果先除掉5的x次幂再乘上2的x次幂以后约数变大了或者约数相等(但是数却变小了对吧),则违反反质数定义。然后不等式解一下得x <= c3-c1。结论已经很明显了不再解释。
 
搜索部分不说了,主要是弥补一下其他博客证明的部分。
PS:反质数有性质4,不代表有性质4的都是反质数。搜索的过程中自然会搜到真的反质数和假的反质数,但真金不怕火炼,他们都会被最后的最大反质数更新掉。
 
 #include <cstdio>
#define ll long long
#define R(x) scanf("%d", &x)
#define W(x) printf("%d\n", x)
#define rep(i, a, b) for (int i = a; i <= b; i++) int n, ans, CNT;
int primes[] = {, , , , , , , , , }; void dfs(int i, int num, int cnt, int last) {
if (i == ) {
if (cnt > CNT || (cnt == CNT && ans > num))
ans = num, CNT = cnt;
return;
} ll t = ;
rep(j, , last) {
if (num * t > n) break; dfs(i + , num * t, cnt * (j+), j);
t *= primes[i];
}
} int main() {
R(n);
dfs(, , , );
W(ans);
}

BZOJ1053(数学结论进行剪枝搜索)的更多相关文章

  1. alpha-beta剪枝搜索

    •一种基于剪枝( α-βcut-off)的深度优先搜索(depth-first search). •将走棋方定为MAX方,因为它选择着法时总是对其子节点的评估值取极大值,即选择对自己最为有利的着法: ...

  2. poj 1416 (hdu 1539)Shredding Company:剪枝搜索

    点击打开链接 题目大意是有一个分割机,可以把一串数字分割成若干个数字之后求和,题目输入一个数字上界和待分割的数字,让我们求出分割后数字之和在不超过给定max的情况下的最大值,并且给出分割方案,如果没有 ...

  3. HDU 2437 Jerboas (剪枝搜索)

    题意:给定一幅图,图上有两种点T,P.......一只跳鼠在一个T点作为起始点,它想通过图上的路到达某个P点,P点满足如下要求: (1).到达P点的途中路径权值为k的倍数 (2).尽量让路径权值取最小 ...

  4. HDU 4620 Fruit Ninja Extreme(2013多校第二场 剪枝搜索)

    这题官方结题报告一直在强调不难,只要注意剪枝就行. 这题剪枝就是生命....没有最优化剪枝就跪了:如果当前连续切割数加上剩余的所有切割数没有现存的最优解多的话,不需要继续搜索了 #include &l ...

  5. UVa 11762 Race to 1 (数学期望 + 记忆化搜索)

    题意:给定一个整数 n ,然后你要把它变成 1,变换操作就是随机从小于等于 n 的素数中选一个p,如果这个数是 n 的约数,那么就可以变成 n/p,否则还是本身,问你把它变成 1 的数学期望是多少. ...

  6. 数学结论【p1463】[POI2002][HAOI2007]反素数

    Description 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4. 如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数.例如,整数 ...

  7. uva 11762 数学期望+记忆化搜索

    题目大意:给一个正整数N,每次可以在不超过N的素数中随机选择一个P,如果P是N的约数,则把N变成N/p,否则N不变,问平均情况下需要多少次随机选择,才能把N变成1? 分析:根据数学期望的线性和全期望公 ...

  8. POJ 3134 Power Calculus (迭代剪枝搜索)

    题目大意:略 题目里所有的运算都是幂运算,所以转化成指数的加减 由于搜索层数不会超过$2*log$层,所以用一个栈存储哪些数已经被组合出来了,不必暴力枚举哪些数已经被搜出来了 然后跑$iddfs$就行 ...

  9. USACO4.1 Beef McNuggets【数学/结论】

    吐槽/心路历程 打开这道题的时候:*&@#%*#?!这不是小凯的疑惑吗?好像还是个加强版的?我疑惑了.原来$USACO$才是真的强,不知道什么时候随随便便就押中了题目. 对于我这种蒟蒻来说,这 ...

随机推荐

  1. Android中点击事件的处理解析及常见问题

          当我们手指按下时,Android采用层层传递-冒泡的方式处理点击事件.例如,现在公司来了个小项目,老板一看分配给经理做,经理一看分配给小组长,小组长一看好简单,分配给组员.如果在这个传递过 ...

  2. CSU 1554 SG Value —— 思维

    题目链接:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1554 Description The SG value of a set (mult ...

  3. Java GET和POST请求

    从表面来看GET和POST请求: GET请求是在url后直接附上请求体,url和请求体之间用"?"分割,不同参数之间用"&"分隔,%XX中的XX为该符号 ...

  4. zoj 2313 Chinese Girls' Amusement 解题报告

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1313 题目意思:有 N 个人(编号依次为1~N)围成一个圆圈,要求求 ...

  5. IOS微信禁用分享跳转页面返回BUG修复

    fresh(); function fresh() { let isPageHide = false; window.addEventListener('pageshow', function () ...

  6. 当数据库中的字段与javabean中对应的属性名不同

    当数据库中的字段与javabean中对应的属性名不同时: 在查询语句中对不同的字段起别名,例如: 数据库中的字段名为last_name , javabean中为lastName则:select las ...

  7. hdu 3932 Groundhog Build Home —— 模拟退火

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=3932 找一个位置使距离最远的点的距离最小: 上模拟退火: 每次向距离最远的点移动,注意判断一下距离最远的点 ...

  8. HDU1711(KMP入门题)

    Number Sequence Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  9. heartbeat3.x部署安装

    使用Heartbeat构建Linux双机热备系统 本文档版本号: V1.0 版 本 历 史 版本号 更新时间 说 明 创建者 V1.0 2013-3-23 修改版 金桥 1 部署环境 OS: Red ...

  10. 基于IOS下的支付宝SDK的学习与使用——实现产品支付(二)

    首先本篇为作者原创,仅供学习使用,以后会不断完善,精炼.阅读之前请参考  上一篇 上一篇 中详细说明了结合官方支付宝SDK,对工程环境进行的一些配置,实现了支付,本篇重点说明一下,注意事项和原理,主要 ...