SP20173 DIVCNT2 - Counting Divisors (square)

Refer

主要思路参考了 Command_block 的题解。

Description

给定 \(n\)(\(n\le 10^{10}\)),求

\[\sum_{i=1}^n\sigma_0(i^2) \mod 2^{64} \]

Solution

首先有一个惯例套路:

\[\sigma_0(i\cdot j)=\sum_{x|i}\sum_{y|j}\left[\gcd(x,y)=1\right] \]

[SDOI2015]约数个数和 以及 BZOJ4176 Lucas的数论 中,我们将这个式子继续化成如下模样,就可以做了:

\[\sigma_0(i\cdot j)=\sum_{t|i,t|j}\mu(t)\cdot d\left(\frac{i}{t}\right)\cdot d\left(\frac{j}{t}\right) \]

最后的结果长这样:(然后就可以杜教筛了)

\[\sum_{i=1}^n\sum_{j=1}^nd(i\cdot j)=\sum_{t=1}^n\mu(t)\cdot\left(\sum_{i=1}^{\left[\frac{n}{t}\right]}d(i)\right)^2 \]

但是这题的这样算结果长这样:

\[\sum_{i=1}^nd(i^2)=\sum_{t=1}^n\mu(t)\cdot\left(\sum_{i=1}^{\left[\frac{n}{t}\right]}d(i)^2\right) \]

这就不太能做。可见,思维僵化的推导方法有时根本行不通。考虑不反演,直接先枚举 \(x\)\(y\)

\[\sum_{i=1}^n\sigma_0(i)=\sum_{i=1}^n\sum_{x|i}\sum_{y|i}\left[\gcd(x,y)=1\right]=\sum_{x=1}^n\sum_{y=1}^n[\gcd(x,y)=1]\cdot \left(\sum_t[x|t,y|t,t\le n]\right) \]

因为 \(x\)\(y\) 互质,所以 \(\sum[x|t,y|t,t\le n]=\left[\frac{n}{xy}\right]\),这就是个比较简洁的式子了:

\[\sum_{i=1}^n\sigma_0(i)=\sum_{x=1}^n\sum_{y=1}^n[\gcd(x,y)=1]\cdot\left[\frac{n}{xy}\right] \]

这时摆在我们面前的最常见的做法是把 \(\gcd(x,y)=1\) 拆开来,但是这回,常见的套路并没有成功。我们需要的是一种全新的方法——构造另一个函数并使用反演公式。设:

\[f(n,t)=\sum_{x=1}^n\sum_{y=1}^n[\gcd(x,y)=t]\cdot\left[\frac{n}{xy}\right] \]

\[F(n,t)=\sum_{x=1}^n\sum_{y=1}^n[t|\gcd(x,y)]\cdot\left[\frac{n}{xy}\right] \]

于是得到:

\[F(n,t)=\sum_{k=1}^{+\infty}f(n,kt) \Rightarrow f(n,t)=\sum_{k=1}^{+\infty}\mu(k)\cdot f(n,kt) \]

我们要求的答案是 \(f(n,1)\)。考虑怎么推这个 \(F\),接下来按套路走就可以辣:

\[F(n,t)=\sum_{T=1}^n \left[\frac{n}{T}\right]\sum_{x|T}\left[t|\gcd(T,\frac{T}x)\right] \]

仔细看就可以发现 \(t|x,t^2|T\),可以得到:

\[F(n,t)=\sum_{T=1}^{\left[\frac{n}{t^2}\right]}\left[\frac{n}{Tt^2}\right]\cdot d(T) \]

总的式子就是:

\[\sum_{i=1}^n\sigma_0(i)=\sum_{t=1}^{\sqrt n}\mu(t)\sum_{T=1}^{\left[\frac{n}{t^2}\right]}\left[\frac{n}{Tt^2}\right]\cdot d(T) \]

\(d\) 的前缀和可以用类似杜教筛的方法得到,前面的部分,假设第二个求和它是除以 \(t\) (往大了放缩) 的时候复杂度可以分析出是和杜教筛一样的,于是总复杂度就是 \(O(n^{\frac{2}{3}})\)

Code

在 vjudge 上交过了,洛谷还在 Waiting。

posted @ 2021-02-13 20:37  Linshey  阅读(112)  评论(0编辑  收藏  举报