- 1
- 0
- 约1.96千字
- 约 2页
- 2026-02-02 发布于北京
- 举报
AntiPrimeSolution
【题意描述】
首先定义一个函数f(x),f(x)表示x的约数的个数。题目中要求的最大
的一个数m满足下列条件:m≤n,且对于一切i<m,有f(i)<f(m)。
【分析】
由于拿到题目时,不知道如何着手。我们首先试着来从小的数据里总结一些
规律出来。
为了能更快的求出一个数的约数,我们来分析一下如何构造函数f(x)。令
x=p1x1*p2x2*……*pnxn(p1,p2……pn均为质数),则f(x)(x1+1)*
(x2+1)*……*(xn+1)。
直接构造出一个反质数比较,我们先给出一个可能是反质数的值A,然
后是否能举出反例,即小于A的数B有的约数。再这样的句反例的过程中
2
我们来看看反质数又怎样的性质。比如先给出一个数50,50=2*5,f(50)
=(1+1)*(2+1)=6。我们找到了一个反例:18=2*32,f(18)=6,而18
小于50,故50不是反质数。在这里我们得到一个结论:
性质一:令Ap1x1*p2x2*……*pnxn(p1,p2……pn均为质数)。
若A是反质数,那么p1,p2……pn是相邻的质数,且p1=2。
这点很容易证明,若pi,pi+1不是相邻的质数或p12,则存在质数p,
满足ppn,且p不是A的质因子。这时我们可将pn换成p,A变小了,但所
含有的约数个数却没变。这与A是反质数。
2
那么18是不是反质数呢?我们又找到了一个反例:12=2*3,f(12)=6。
而12小于18,故18也不是反质数。我们又得到了一个性质:
性质二:令Ap1x1*p2x2*……*pnxn(p1,p2……pn均为质数)。
若A是反质数,那么x1≥x2≥……≥xn。
同样的,我们用反证法来证明,若xixj(ij),我们可将xi与xj互换,A
变小了,但所含的约数个数没变,与A是反质数。
有了以上的两条结论我们可以知道反质数的质因子只能是由2开始的连续
9
的质数,而且质因子上的指数递减。题目中规定反质数的上界为2*10,而
9
2*3*5*7*11*13*17*19*23*296*10,故我们只用考虑从2到29内的
质数即可。这样,我只要通过搜索,枚举2到29中质数上的因子就可以得到最
大的反质数了。
【算法设计】
1.读入N;
2.枚举10个小质数的个数x,满足x1=x2=x3=…=x10,若乘
积大于N,则剪枝,否则和当前比大小,取大的数;
3.输出。
【算法效率】
本题的时间复杂度很难估计,应该来说这是一个NP的问题,但由于满足反
质数条件的数相当少,而且在程序中能加入很强的截枝条件。这使得程序的效率
很高:对于所有的测试数据,程序都能在瞬间出解。
【总结】
在解这道题的过程中,我们没有直接寻找Antiprimenumber的性质,而
是从计算约数个数的方法入手,发现了约数个数,只与分解质因数后的指数有关,而
与底数无关,进而得到了一个数是Antiprimenumber的必要条件。最后,通
过这些条件,充分挖掘数据的特征性质,缩小了搜索范围,达到了优化的目的。
信息学竞赛中,若出现数学性质很强的题目,一般都要求的是高效率,巧算
法。对于这些题目,如果一开始就仓促的去设计算法往往会四处碰壁,倒不如先
静下心来,举几个简单的例子,做一番分析,对问题有了大致了解后再动手解决。
您可能关注的文档
最近下载
- 2025部编版一年级道德与法治下册教学计划.docx VIP
- 以奋斗者为本PPT.ppt VIP
- 学习《未成年人保护法》预防未成年人犯罪知识讲座PPT.pptx VIP
- 2025年度单位普通党员组织生活会个人对照检查材料.docx VIP
- Unit2AmazingChinaReadingI课件-译林版英语八年级下册(1).pptx VIP
- 建设工程工程量清单计价规范(GB 50500-2024).docx VIP
- 华为以奋斗者为本.pptx VIP
- 被执行人生活费申请书范文.docx VIP
- 国际人才英语教程(中级)课后习题答案解析.pdf
- 高频精选:大庆职业学院单招面试题及答案.doc VIP
原创力文档

文档评论(0)