题目大意:
给定(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)
这样就对得起它的题目名字了
但是上面莫比乌斯反演方法的各种套路都很经典,也值得一看