bzoj4176-Lucas的数论
题意
求
\[\sum _{i=1}^n\sum _{j=1}^n\sigma (ij)
\]
其中 \(\sigma(x)\) 为约数个数函数。
\(n\le 10^9\) 。
分析
拆开咯
\[\begin{aligned}
\sum _{i=1}^n\sum _{j=1}^n\sigma (ij)&=\sum _{i=1}^n\sum _{j=1}^n\sum _{d|ij}1 \\
&=\sum _{i=1}^n\sum _{j=1}^n\sum _{\frac{d}{\gcd(d,i)}|j}1 \\
&=\sum _{i=1}^n\sum _{j=1}^n\sum _{e|i}\sum _{a=1}^{\lfloor\frac{n^2}{e}\rfloor}[a|j][\gcd(a,\frac{i}{e})=1] \\
&=\sum _{i=1}^n\sum _{j=1}^n\sum _{e|i}\sum _{a|j}[\gcd(a,e)=1] \\
&=\sum _{i=1}^n\sum _{j=1}^n\sum _{e|i}\sum _{a|j}\sum _{d|a,d|e}\mu (d) \\
&=\sum _{d=1}^n\mu (d)\sum _{e=1}^{\lfloor\frac{n}{d}\rfloor}\sum _{e|i}\sum _{a=1}^{\lfloor\frac{n}{d}\rfloor}\sum _{a|j} \\
&=\sum _{d=1}^n\mu (d)(\sum _{e=1}^{\lfloor\frac{n}{d}\rfloor}\lfloor\frac{n}{de}\rfloor)^2
\end{aligned}
\]
设 \(f(m)=\sum _{i=1}^m\lfloor\frac{m}{i}\rfloor\) ,那么
\[\sum _{i=1}^n\sum _{j=1}^n\sigma (ij)=\sum _{d=1}^n\mu (d)f(\lfloor\frac{n}{d}\rfloor)^2
\]
前面的 \(\mu\) 用杜教筛,后面的 \(f\) 直接计算,复杂度为
\[\int _0^\sqrt n (\sqrt x+\sqrt\frac{n}{x})dx=n^\frac{3}{4}
\]
杜教筛中访问的都是 \(\frac{n}{x}\) 的形式,所以复杂度相当于一次杜教筛,也是 \(n^\frac{3}{4}\) (或预处理后的 \(n^\frac{2}{3}\) )。
数论题在推的时候一定要注意,枚举完之后看看是否有一些 \(\gcd\) 的限制,比如说上面枚举 \(a\) 的时候,之前就没有注意到,导致推出来一个错误的结果。
回到上面推导过程中的第四行,我们实际上推出了一个形式优美的等式:
\[\sum _{i=1}^n\sum _{j=1}^n\sigma (ij)=\sum _{i=1}^n\sum _{j=1}^n\lfloor\frac{n}{i}\rfloor\lfloor\frac{n}{j}\rfloor [\gcd(i,j)=1]
\]
观察推导过程,就能发现这个式子是可以拓展的:
\[\sum _{a_1}\sum _{a_2}\sum _{a_3}\cdots\sigma(\prod a_i)=\sum _{a_1}\lfloor\frac{n}{a_1}\rfloor\sum _{a_2}\lfloor\frac{n}{a_2}\rfloor\sum _{a_3}\lfloor\frac{n}{a_3}\rfloor\cdots [两两\gcd 均为1]
\]
推到最后就是 \(f\) 上面的指数发生变化。
很有趣的结论呢!