SRM582 SemiPerfectPower
题意
给定\(l,r\),求有多少个\(x\in[l,r]\),使得\(x\)可以表示成\(a\cdot b^c(a<b,c>1)\)
(这个东西叫SemiPerfect number,直译过来就是半完美数)
\(l\le r\le 8\cdot 10^{16}\)
做法
一般的,以下考虑\(l=1,r=n\)
引理:每个半完美数都可表示成\(c=2\)或\(c=3\)。
证明:
若\(c>3\)且为偶数,\(a\cdot b^{2k}=a\cdot (b^k)^2\)
若\(c>3\)且为奇数,\(a\cdot 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\)
显然有\(a\le \sqrt[3]{n}\)
暴力枚举\(a\),至于是否有平方数因子可以用莫比乌斯函数判断
考虑计算最小表示法\(c=3\)
如何判断其不能用\(c=2\)表示呢?
\(a\cdot 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^2\ge bk\),即\(a\ge k^3\)
容易得到:
假设以下满足\(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]\)
我们这么处理:
预处理出\(\sum\limits_{i=1}^r [d|i]]\cdot P_2(i)\)
这个可以写成\(F(d,r/d)=\sum\limits_{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}\),实际中非常不满