洛谷P3768 简单的数学题

题目大意:

给定(n),(p),求

[(sumlimits_{i=1}^{n}sumlimits_{j=1}^{n}ijgcd(i,j))mod p ]

前置芝士:

莫比乌斯反演

[mu*1=e ]

欧拉反演

[phi*1=n ]

杜教筛

点一下就有啦´ ▽ ` )ノ

首先我们很习惯地把(gcd)提出来

[sumlimits_{x=1}^{n}xsumlimits_{i=1}^{n}sumlimits_{j=1}^{n}ij[gcd(i,j)==x] ]

然后把后面的(x)也提出来,由于(i,j)中少了一个x,所以前面变成(x^3)

[sumlimits_{x=1}^{n}x^3sumlimits_{i=1}^{lfloorfrac{n}{x} floor}sumlimits_{j=1}^{lfloorfrac{n}{x} floor}ij[gcd(i,j)==1] ]

对最后一个(sum)进行莫比乌斯反演

[sumlimits_{x=1}^{n}x^3sumlimits_{i=1}^{lfloorfrac{n}{x} floor}sumlimits_{j=1}^{lfloorfrac{n}{x} floor}ijsumlimits_{d|gcd(i,j)}mu(d) ]

然后我们把最后一个(sum)提前,枚举因子转枚举倍数

[sumlimits_{x=1}^{n}x^3sumlimits_{d=1}^{lfloorfrac{n}{x} floor}d^2mu(d)sumlimits_{i=1}^{lfloorfrac{n}{dx} floor}sumlimits_{j=1}^{lfloorfrac{n}{dx} floor}ij ]

对于最后两个(sum),用等差数列求和可以化简为(frac{x^2(x+1)^2}{4}),我们记做(F(x))

[sumlimits_{x=1}^{n}x^3sumlimits_{d=1}^{lfloorfrac{n}{x} floor}d^2mu(d)F(lfloorfrac{n}{dx} floor) ]

然后似乎无法化简了,不过我们在YY的GCD中提到了一种方法:

(t=dx),则

[ret=sumlimits_{t=1}^{n}F(lfloorfrac{n}{t} floor)t^2sumlimits_{x|t}mu(frac{t}{x})(x) ]

最后一个(sum)可以欧拉反演

[ret=sumlimits_{t=1}^{n}F(lfloorfrac{n}{t} floor)t^2phi(t) ]

接下来,我们设(f(t)=t^2phi(t))

[ret=sumlimits_{t=1}^{n}F(lfloorfrac{n}{t} floor)f(t) ]

我们已经知道(F(i))了,接下来只需要知道(sumlimits_{i=1}^{n}f(i))就可以除法分块了
显然后面这个东西是个积性函数,我们可以用杜教筛

也就是说我们要构造可以快速求前缀和的,满足(h=f*g)(h)(g)

观察(f*g),它等价于

[sumlimits_{i|x}i^2phi(i)*g(x/i) ]

它前面的(i^2)令我们无法对(h)快速求前缀和,想办法消掉

(g(x)=x^2),则

[h(x)=sumlimits_{i|x}i^2phi(i)*(x/i)^2=x^2sumlimits_{i|x}phi(i) ]

这个(sum)仍然可以用欧拉反演,得到

[h(x)=x^3 ]

然后运用小学奥数(雾),就可以得知

[sumlimits_{i=1}^{n}h(i)=frac{x^2(x+1)^2}{4} ]

然后套下杜教筛,得到

[g(1)S(n)=sumlimits_{i=1}^{n}h(i)-sumlimits_{i=2}^{n}g(i)S(lfloorfrac{n}{i} floor) ]

然后就可以快速求出(f(i))的前缀和,进行除法分块了

复杂度(O()能过())

(貌似要用微积分,我自己推的复杂度好像不太对……

然后我们就做完了这道莫比乌斯反演题目,但是它为什么叫简单的数学题呢???

我们再看看题目

[(sumlimits_{i=1}^{n}sumlimits_{j=1}^{n}ijgcd(i,j))mod p ]

然后再看看这个

[phi*1=n ]

然后欧拉反演一下

[sumlimits_{i=1}^{n}sumlimits_{j=1}^{n}ijsumlimits_{k|gcd(i,j)}phi(k) ]

(k)扔前面

[sumlimits_{k=1}^{n}phi(k)*k^2sumlimits_{i=1}^{lfloorfrac{n}{k} floor}sumlimits_{j=1}^{lfloorfrac{n}{k} floor}ij ]

发现后面两项可以化简

[sumlimits_{k=1}^{n}phi(k)*k^2sumlimits_{i=1}^{lfloorfrac{n}{k} floor}i^3 ]

然后继续套个杜教筛就好了(qwq)

这样就对得起它的题目名字了

但是上面莫比乌斯反演方法的各种套路都很经典,也值得一看

原文地址:https://www.cnblogs.com/knife-rose/p/12019369.html