luogu P1463 [HAOI2007]反素数 (数学)

luogu P1463 [HAOI2007]反素数

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的最大的反素数么?

Hint
这题要先分成几个部分一一讲解

约数定理
我们设$P$是素数集合,即$P\={2,3,5,7,9…}$
那么对任意一个大于1的正整数N,存在集合$A$,使得 $$N\=\prod {i\=1}^{k} {P_i}^{A_i}\={P_1}^{A_1}*{P_2}^{A_2}*…*{P_k}^{A_k}$$
即对N分解质因数
那么N的约数个数,就是从N的质因数中选出若干相乘后得到的不同的数的个数
因为都是素数相乘,只要有一个元素不同,得到的结果就不同
则对于$P_i$,我们可以取出$0,1,2,3…A_i$个,根据乘法原则,N的约数个数$$g(N)\=\prod
{i\=1}^{k} (A_i+1)\=(A_1+1)(A_2+1)…(A_k+1)$$

其实关于约数还有一些有趣的定理,这里引用一位大佬的博客

题意转化
根据反素数的定义,一个数N是反素数说明$\forall 0<ig(i)$,即N的约数个数是1~N中最大的
那么对于一个数字N,如果存在$\exists i<j,A_i<A_j$,则N不是反素数
证明 设交换$A_i,A_j$后,新的结果为M,则M的约数个数和N相等,要证N不是反素数,只需证明M1$$,而a>b,d>c,结论成立.
则N的集合A递减
所以我们枚举每一个质数指数 搜最大答案

猜你喜欢

转载自www.cnblogs.com/LonelyRyan/p/9009446.html