题意:

对于任何正整数 x ,其约数的个数记为 g(x)。如果某个正整数 x 满足:对于任意的 0 < i < x,都有g(x) > g(i),那么x为反质数。例如整数 1,2,4,6等都是反质数。先给定一个数 N,求出不超过 N 的最大的反质数。

思路:

 首先需要考虑到几个性质,前10个质因子的乘积大于1e9,并且唯一分解后,所有质数的指数之和小于30,而且对于反素数而言,一定不存在一个比它小的数约数个数比它多或者一样多。

而且约数个数 = (1+c1)(1+c2)(1+c3)...(1+cm),ci 为第 i 个质因子的指数。由此我们可以发现,反素数唯一分解之后,一定只包含前10个质数,因为如果包含了更大的质数的话,都可以由前面较小的质数替换掉。而且可以发现将质数从小到大进行排列,他们的指数一定是递减的。因为如果出现了类似 (2^5)*(3^4)*(5^7) 这样的唯一分解,则可以换成(2^7)*(3^5)*(5^4),约数个数不变,但是值却更小了,因此指数一定是递减的。由此此题就变成了一个搜索问题。

代码:

#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
#define rep(i,a,b) for(int i = a; i <= b; i++)
using namespace std;
typedef long long ll;int n,cnt[20] ,prime[20] = {0,2,3,5,7,11,13,17,19,23,29},ans,ant;void dfs(int id,ll now){if(id == 11){int tp = 1;rep(i,1,10) tp = tp*(cnt[i]+1);if(tp > ant) ant = tp, ans = now;else if(tp == ant && now < ans) ans = now;return;}cnt[id] = 0; dfs(id+1,now);rep(i,1,30){now = now*prime[id];if(now > n) break;cnt[id] = i; dfs(id+1,now);}
}int main()
{scanf("%d",&n);dfs(1,1);printf("%d\n",ans);return 0;
}

【BZOJ 1053】反素数【素数基本知识】相关推荐

  1. 输出100-200之间所有的素数(素数:只能被1和自己本身整除的数)

    输出100-200之间所有的素数 素数:只能被1和自己本身整除的数 <script type="text/javascript">// 1. 输出100-200之间所有 ...

  2. BZOJ 1053 [HAOI2007]反素数ant

    53: [HAOI2007]反素数ant Description 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4.如果某个正整数x满足:g(x)>g(i) 0< ...

  3. bzoj 1053: [HAOI2007]反素数ant 51nod-1060:最复杂的数(反素数与因数个数计算)

    问题概述:把一个数的约数个数定义为该数的复杂程度,给出一个n,求1-n中复杂程度最高的那个数. 例如:12的约数为:1 2 3 4 6 12,共6个数,所以12的复杂程度是6.如果有多个数复杂度相等, ...

  4. BZOJ 3085: 反质数加强版SAPGAP (反素数搜索)

    题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3085 题意:求n(<=10^100)之内最大的反素数. 思路: 优化2: i ...

  5. HDU 4548 美素数 素数题解

    本题就是能够直接打表的,推断能否够打表也须要技巧的: 1 推断最大的数值为1000000.百万下面的数打表都是能够的 2 能够线性预处理好.使用素数筛子法是能够接近线性预处理的. 故此能够打表了. 须 ...

  6. 筛法求素数 素数打表

    c++ #include<cstdio> #include<cstring> #include<cmath>//素数打表 ,时间复杂度:O(nlog n) char ...

  7. c语言mn间有多少素数,素数表达式p=2a+1 (a ≠ 2mn+m+n)由此出发看哥猜、挛猜比较清晰...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 zzzvipsinacom的贴子:偶数2N+4至少可以表示为N/(2Sqr(2N+1))个素数对之和,其贡献在于:将模糊的哥猜.挛猜等问题,推演.变换成为 ...

  8. c语言三胞胎素数,素数、孪生素数、三胞胎素数、四胞胎素数分布规律:近似均匀分布...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 本人这种观点很少有人认同,因为传统上认为素数越来越稀疏,而我且认为素数是近似平均分布,与传统观念背道而驰.很少有人相信,甚至有的专家对此评价为" ...

  9. 如何判断一个正整数是否是素数素数(Prime Number),又称质数,一个大于1的自然数,除了1和它自身外,不能整除其他自然数的数叫做质数;

    def prime(x):''':type x: int'''# 请在此添加代码,实现判断一个数是否是素数# ********** Begin *********## n1=str(float(x)) ...

  10. IOS安全、逆向、反编译1-越狱知识讲解

    之前开发了一个对安全性要求比较高的APP,所以对安全.逆向和反编译有了一些认识,最近有时间就想系统的把这些知识做一个整理.今天就开始把我的学习过程记录下来. iOS越狱环境搭建 在学习iOS越狱之前, ...

最新文章

  1. CCNA(Stand-ALONE)Lab 12-Static Routes
  2. 输入参数_MyBatis中的输入/输出参数
  3. Udacity并行计算课程笔记-The GPU Hardware and Parallel Communication Patterns
  4. 闪灯什么意思_车灯闪1下、2下、3下各代表什么意思?关键时刻可以保命
  5. 视觉智能产品发布 阿里云这项世界第一的技术现在人人可用
  6. 利用modelarts和物体检测方式识别验证码
  7. Sql Server 行转列学习 根据学生表、课程表、学生成绩表统计每个学生的各科成绩和他的总成绩、平均成绩...
  8. I2S,PCM,IOM-2,I2C,SPI,UART,GPIO
  9. 容器(Context)使用之支付系统
  10. 为什么时间是60进制的啊? ? ?
  11. java宿舍管理系统主要功能_Java学生宿舍管理系统主要内容及特点
  12. php doss_ddos PHP版
  13. 宝宝树小时光品牌升级:让宝宝从小爱上阅读
  14. 过程能力指数Cp与Cpk计算公式
  15. php html ubb,php UBB 解析实现代码
  16. 【土旦】在vue filters中 优雅的使用对象的key、value来替换 if switch多重判断简化流程...
  17. 使用AI提取文字路径
  18. org.apache.thrift.transport.TTransportException: SASL authentication not complete
  19. 设计师需要的知识体系
  20. 通过JS解析手机浏览器UA标志中的各种设备信息

热门文章

  1. OCS:运营商制胜3G的关键
  2. java中utilities类_Java SwingUtilities类
  3. mysql 接收中文字符,MYSQL匹配中文字符
  4. 学生用计算机怎么乘跟跟号号,3根号键的啊函数计算器价格多少,它与普通计 – 手机爱问...
  5. 在python中使用最小二乘法画出拟合曲线_Python基于最小二乘法实现曲线拟合示例...
  6. 高斯混合模型聚类_高斯混合模型的解释及Python实现
  7. php编写程序计算积分_PHP论坛实现积分系统的思路代码详解
  8. oracle分区表 mysql_Oracle分区表的使用和管理
  9. 与原子操作相关的 volatile 和 sig_atmotic_t
  10. 双向绑定 当obj的值修改时_Vue3为什么选择Proxy做双向绑定?