容斥理解
从容斥的角度考虑莫比乌斯反演 (g(x)=sum_{i|x}f(i) leftrightarrow f(x)=sum_{i|x}g(i)mu(frac{x}{i})) 的意义。
左侧的等式的意思是 (g(x)) 表示所有 (x) 的约数的 (f) 的和。
右侧的等式的意思是:
-
(f(x)) 有基本解 (g(x)mu(1))。
-
(f(x)) 为了去掉自己的约数的影响,强行枚举这些多加的约数相对 (x) 少了哪些质因数。
令 (x=prod_{i=1}^{omega}p_i^{alpha_i}),显然约数少一个质因数 (p_i) 就要多乘一个容斥系数 (-1)。所以 (mu) 的值多一个质因数就要乘以一个 (-1) 的意义就解释清楚了。
另外可以注意到少了 (p_i^2) 情况并不属于容斥的过程。所以 (mu) 的值在有平方因子的情况下为 (0) 的意义就解释清楚了。
有了如上的解释,我们很容易就能得出另外一个对偶的莫比乌斯反演 (g(x)=sum_{x|i}f(i) leftrightarrow f(x)=sum_{x|i}g(i)mu(frac{i}{x})) 的意义。
这两个莫比乌斯反演都可以在 (O(n ln n)) 的时间内完成计算。
DivCnt2
求 (sum_{i=1}^nsigma_0(i^2))。
(n leq 10^{11})。
题解
https://www.cnblogs.com/clrs97/p/5986557.html
其中
容斥理解
(f(n)) 的意思是统计 (n) 有多少个约数没有平方因子。(sigma_0(n^2)) 的等式的意义不明显,从容斥的角度考虑莫比乌斯反演后的式子
[f(n)=sum_{d|n}sigma_0(d^2)mu(frac{n}{d}) ]这个等式的意思是我们可以转而统计 (n^2) 有多少个约数没有平方因子:
(f(n)) 有基本解 (sigma_0(n^2)mu(1))。
(f(n)) 为了去掉有平方因子的约数的影响,强行枚举这些平方因子包含的平方质因子。
令 (n=prod_{i=1}^omega p_i^{alpha_i}),那么通过参数 (d^2) 使得每次减少一个 (p_i^2) 就多乘上一个容斥系数 (-1)。
组合意义理解
(f(n)) 的值实际上就是 (2^{omega})。那么 (sigma_0(n^2)) 的等式就相当于这样一个过程:
有 (omega(n)) 个集合 ({0,1,dots,alpha_1},dots,{0,1,dots,alpha_{omega}}),现在要从每一个集合里选一个数,选 (0) 的贡献为 (1),其余的贡献为 (2)。问所有选择方式的贡献的乘积之和是多少?显然答案就是 (prod_{i=1}^{omega}(2alpha_i+1)=sigma_0(n^2))。
其中
又因为
(sum_{i=1}^nmu^2(i)) 是在统计 (n) 以内有多少数没有平方因子。基本解:(mu(1)lfloorfrac{n}{1} floor)。容斥系数:多一个 (p^2) 多一个 (-1)。
因此首先线性筛预处理出 (n^{frac{2}{3}}) 内的所有答案,然后分段计算即可。时间复杂度 (O(Tn^{frac{2}{3}}))。