TopCoder - 12584 SRM 582 Div 1 SemiPerfectPower (莫比乌斯反演)
TopCoder - 12584 SRM 582 Div 1 SemiPerfectPower (莫比乌斯反演)
题目大意:
给定 \(L,R\) ,求 \([L,R]\) 中能够表示为 \(a\cdot b^c(1\leq a<b,c>1)\) 的数(SemiPerfect数)的个数
\(R\leq 8\cdot 10^{16}\)
解题思路
首先显然可以通过作差转化为求 \([1,n]\) 内的个数
接下来考虑简化 \(c\) 的情形
推论:任何一个SemiPerfect数可以表示为 \(c\leq 3\) 的形式
证明:若 \(c>3\) ,对于 \(n=a\cdot b^c(c>3)\)
当 \(2|c\) 时,显然存在形如 \(n=a\cdot (b^{\frac{c}{2}})^{2}\) 的表示
当 \(2\not |c\) 时,可以表示为 \(n=(a\cdot c)\cdot (b^{\frac{c-1}{2}})^2\) 同样合法
接下来考虑对于两种情况分类讨论
为了便于叙述,令 \(F(n)=\max \lbrace k\in \N^+|\ k^2|n\rbrace\)
\(G(n)=[\nexists k>1,k^3|n]\)
Part1 \(c=2\)
为了避免重复,强制每一个数 \(n\) 的唯一表示为
\(n=a\cdot b^2(F(a)=1,a<b)\)
由于 \(a<b\) ,所以显然 \(n>a^3\) ,即 \(a<n^{\frac{1}{3}}\)
暴力枚举 \(a\) ,预处理 \(n^{\frac{1}{3}}\) 中所有的 \(G(i)\) 即可
\[ \ \]
Part \(c=3\)
同样的,限制条件为 \(n=a\cdot b^3,(G(a)=1,a<b)\) ,得到 \(a<n^{\frac{1}{4}}\)
但是由于 \(c=2,3\) 两部分有重复,还需额外考虑强制 \(n\) 不存在形如 \(n=a'\cdot b'^2\) 的表示
假设已知 \(n=a\cdot b^3\) ,不存在 \(n=a'\cdot b'^2\) 的判定条件是
\(a'=\frac{n}{F^2(n)}\ge F(n)\) ,即 \(F(n)\leq n^{\frac{1}{3}}\)
同时由于 \(F(n)=F(a\cdot b)b\)
得到 \(F(a,b)\leq a^{\frac{1}{3}}\)
由于等号右边包含 \(a\) ,考虑枚举 \(a\) ,易求出 \(L=F(a),d=\frac{a}{L^2}\) ,得到 \(F(a\cdot b)\) 的另一种表达形式
\(F(a\cdot b)=L \cdot \gcd (d,b)\cdot F(\frac{b}{\gcd(d,b)})\leq a^{\frac{1}{3}}\)
上面的转化意为: \(L\) 为 \(a\) 中已经成对的部分自然取出,然后优先考虑为 \(D\) 匹配 \(b\) 中的因数成对,对于剩下的部分再重新计算答案
\[ \ \]
化简该式,得到 \(L\cdot \gcd(d,b)F(\frac{b}{\gcd(d,b)})\leq a^{\frac{1}{3}}\)
式子包含 \(\gcd\) ,似乎具有莫比乌斯反演的性质
考虑计算 \(b\in [a+1,(\frac{n}{a})^{\frac{1}{3}}]\) 的数量
观察到 \(a^{\frac{1}{3}}\leq n^{\frac{1}{12}}\) ,上限只有 \(25\) 左右,可以考虑直接枚举 \(F(\frac{b}{\gcd(b,d)})\)
令枚举的 \(g=\gcd(b,d),F(\frac{b}{g})=f\) ,计算 \(\gcd(\frac{b}{g},\frac{d}{g})=1,g\cdot f\cdot L\leq a^{\frac{1}{3}}\) 的 \(b\) 的数量
考虑直接从 \(\frac{b}{g}\) 中把 \(f^2\) 的因数提取出来,令 \(\begin{aligned} L'=\lceil \frac{a+1}{gf^2}\rceil,R'=\lfloor \frac{(\frac{n}{a})^{\frac{1}{3}}}{gf^2}\rfloor \end{aligned}\) ,令 \(i=\frac{b}{gf^2},x=\frac{d}{g}\) ,得到新的限制条件式子为
\(\gcd(x,f)=1,\gcd(i,x)=1,F(i)=1,i\in[L',R']\)
在确定了 \(g,f\) 之后,需要考虑的限制就是 \(\gcd(i,x)=1,F(i)=1,i\in[L',R']\)
由于包含 \(\gcd\) ,不妨用莫比乌斯反演计算该式,得到表达式为
\(Sum=\sum_{k|x}\mu(k)\sum_{i\in [L',R']} [k|i\ \text{and}\ F(i)=1]\)
对于 \(k\) ,计算 \(\sum_{i\in[L',R']}[k|i\ \text{and}\ F(i)=1]\) 可以归纳为计算
\(\sum_{i=\frac{n}{k}} [F(ik)=1]\) ,一共有 \(n^{\frac{1}{3}}\ln n\) 种不同的权值,可以暴力预处理得到
枚举 \(d\) 的因数对于所有的上面的式子计算,可能的 \(g,f\) 并不多,可以直接枚举
1 |
|