[刷题] 莫比乌斯反演

简单题

题目链接:洛谷P6156 简单题

Description

给定 \(n,k\) ,求\(\sum_{i=1}^{m}\sum_{j=1}^{n}(i+j)^kf(gcd(i,j))gcd(i,j)\)
其中\(gcd(i,j)\)表示\(i,j\)的最大公约数,\(f\)函数定义如下:如果\(k\)有平方因子,\(f(k)=0\),否则\(f(k)=1\)
注:平方因子的定义是:如果存在一个整数\(k\ (k>1)\)\(k^2 | n\),则\(k\)\(n\)的一个平方因子。
答案对\(998244353\)取模。
数据范围 \(n\le 5\times 10^6, k\le 10^{18}\)
时间限制 \(1\ second\).

Solution

首先,观察到\(f\)函数其实就是\(\mu ^2\),开始化简式子:

\[=\sum_{i=1}^{n}\sum_{j=1}^{n}(i+j)^k\mu ^2(gcd(i,j))gcd(i,j) \]

\(gcd\)提前:

\[=\sum_{d=1}^{n}\mu ^2(d)d\sum_{i=1}^{n}\sum_{j=1}^{n}(i+j)^k[gcd(i,j)=d] \]

\[=\sum_{d=1}^{n}\mu ^2(d)d^{k+1}\sum_{i=1}^{n/d}\sum_{j=1}^{n/d}(i+j)^k[gcd(i,j)=1] \]

\(\mu\)提前:

\[=\sum_{d=1}^{n}\mu ^2(d)d^{k+1}\sum_{t=1}^{n/d}\mu(t)t^k\sum_{i=1}^{n/(td)}\sum_{j=1}^{n/(td)}(i+j)^k \]

\(S(x)=\sum_{i=1}^{x}\sum_{j=1}^{x}(i+j)^k\),则将\(S\)函数代入原式:

\[=\sum_{d=1}^{n}\mu ^2(d)d^{k+1}\sum_{t=1}^{n/d}\mu(t)t^kS(\frac{n}{td}) \]

\(T=td\),将其提前:

\[=\sum_{T=1}^{n}T^kS(\frac{n}{T})\sum_{d|T}d\mu ^2(d)\mu(\frac{T}{d}) \]

\(H(x)=\sum_{d|x}d\mu^2(d)\mu(\frac{x}{d})\),代入:

\[=\sum_{T=1}^{n}T^kS(\frac{n}{T})H(T) \]

接下来,我们考虑如何快速计算\(S\)\(H\)函数。
我们令\(f(n)=\sum_{i=1}^{n}i^k\)\(g(n)=\sum_{i=1}^{n}f(i)\),也就是说\(f\)\(ID\)\(k\)次方的前缀和,\(g\)\(f\)的前缀和。
那么\(S(n)=(f(n+1)-f(1))+(f(n+2)-f(2))+...+(f(2n)-f(n))=\sum_{i=n+1}^{2n}f(i)-\sum_{i=1}^{n}f(i)=g(2n)-2g(n)\)
注意到\(f(x)=ID^k(x)\)可以在\(O(n)\)复杂度内用线性筛筛出来,那么\(g(x)\)可以在\(f(x)\)求完后扫一遍得到,\(S(x)\)也可以相应出来。
我们再考虑\(H(n)=\sum_{d|n}d\mu^2(d)\mu(\frac{n}{d})\),由于\(ID\)\(\mu\)都是完全积性函数,且表达式是完全积性函数的狄利克雷卷积形式,所以\(H\)函数也是完全积性函数。
我们考虑在线性筛中质数\(p\)筛到数\(x\)的情形,首先一定满足\(p|x\),我们令\(k\)为最大的满足\(p^k|x\)的值。
那么由于完全积性函数性质,我们有\(H(x)=H(p^k)\times H(\frac{x}{p^k})\)
下面针对\(H(p^k)\)进行分类讨论:
\(k=0\)时,即\(H(1)\)的取值一定为\(1\)
\(k=1\)时,\(H(p)=1 \mu^2(1)\mu(p)+p\mu^2(p)\mu(1)=p-1\)
\(k=2\)时,\(H(p^2)=1 \mu^2(1)\mu(p^2)+p\mu^2(p)\mu(p)+p^2\mu^2(p^2)\mu(1)=-p\)
\(k\ge 3\)时,由抽屉原理知,\(d\)\(\frac{x}{d}\)至少有一个数是\(p^2\)的倍数,所以那一个\(\mu\)值为\(0\),所以\(H(p^k)=0\)
于是我们可以通过\(k\)的值,来计算\(H(x)\)了。
时间复杂度:\(O(n)\),预计得分\(100\)分。

Code

猜你喜欢

转载自www.cnblogs.com/wlzhouzhuan/p/12623974.html