SRM582 SemiPerfectPower

题意

给定(l,r),求有多少个(xin[l,r]),使得(x)可以表示成(acdot b^c(a<b,c>1))
(这个东西叫SemiPerfect number,直译过来就是半完美数)
(lle rle 8cdot 10^{16})

做法

一般的,以下考虑(l=1,r=n)

引理:每个半完美数都可表示成(c=2)(c=3)

证明:
(c>3)且为偶数,(acdot b^{2k}=acdot (b^k)^2)
(c>3)且为奇数,(acdot b^{2k+1}=(ab)cdot (b^k)^2)

定义:令(P_2(x))表示(x)是否没有非平凡的平凡数因子;令(P_3(x))表示(x)是否没有非平凡的立方数因子、

定义:对于一个半完美数(x),其最小表示法为在满足(c)最小的情况下。若(c=2),则需满足(P_2(a)=1);若(c=3),则需满足(P_3(a)=1)

考虑计算最小表示法(c=2)
显然有(ale sqrt[3]{n})
暴力枚举(a),至于是否有平方数因子可以用莫比乌斯函数判断

考虑计算最小表示法(c=3)
如何判断其不能用(c=2)表示呢?
(acdot b^3=(ab)cdot b^2)
(k^2|ab),且(k^2)(ab)的最大平方因子
((ab)cdot b^2=(ab/k^2)cdot (bk)^2),其不能用(c=2)表示的充要条件为(ab/k^2ge bk),即(age k^3)

容易得到:

[sumlimits_{a=1}^{sqrt[4]{n}}[P_3(a)]sumlimits_{k=1}^{sqrt[3]{a}}sumlimits_{b=a+1}^{sqrt[3]{n/a}}[k^2|ab]cdot P_2(ab/k^2) ]

假设以下满足(k^2|ab)
(k'=k^2/(k^2,a))
(a'=a/(k^2,a))
(b'=b/k')
那么(P_2(ab/k^2)=P_2(a'cdot b')=P_2(a')cdot P_2(b')cdot [(a',b')=1])

[sumlimits_{a=1}^{sqrt[4]{n}}[P_3(a)]sumlimits_{k=1}^{sqrt[3]{a}}sumlimits_{b'=a/k'+1}^{frac{sqrt[3]{n/a}}{k'}}P_2(a')cdot P_2(b')cdot [(a',b')=1] ]

[sumlimits_{a=1}^{sqrt[4]{n}}[P_3(a)]sumlimits_{k=1}^{sqrt[3]{a}}P_2(a')sumlimits_{d|a'}mu(d)sumlimits_{b'=a/k'+1}^{frac{sqrt[3]{n/a}}{k'}} [d|b']cdot P_2(b') ]

我们这么处理:
预处理出(sumlimits_{i=1}^r [d|i]]cdot P_2(i))
这个可以写成(F(d,r/d)=sumlimits_{i=1}^{r/d}P_2(id))(递推(O(1))转移)
这个状态数是(int_{1}^{n^{1/4}}frac{n^{1/3}}{x}dx=O(n^{1/3}ln(n)))

然后我们暴力算前面三项,在long long范围内,我们习惯将(n)约数个数的上界定义为(O(n^{1/3}))
那么暴力算前三项的复杂度积分一下大约为:(n^{7/18}),实际中非常不满

原文地址:https://www.cnblogs.com/Grice/p/14146433.html