简单题
题目链接:洛谷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\),开始化简式子:
将\(gcd\)提前:
将\(\mu\)提前:
令\(S(x)=\sum_{i=1}^{x}\sum_{j=1}^{x}(i+j)^k\),则将\(S\)函数代入原式:
令\(T=td\),将其提前:
令\(H(x)=\sum_{d|x}d\mu^2(d)\mu(\frac{x}{d})\),代入:
接下来,我们考虑如何快速计算\(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\)分。