没有看懂题目呢说的是什么,但是我们要求的是这个式子
\[Ans=\sum_{i=1}^n\sum_{j=1}^n\varphi(gcd^2(i,j))\]
看起来挺鬼畜的是吧
老方法枚举\(gcd\)
\[Ans=\sum_{i=1}^n\varphi(i^2)f(\left \lfloor \frac{n}{i} \right \rfloor)\]
其中
\[f(d)=\sum_{i=1}^{\left \lfloor \frac{n}{d} \right \rfloor}\sum_{j=1}^{\left \lfloor \frac{n}{d} \right \rfloor}[(i,j)=1]\]
非常显然的是
\[f(d)=2\times \sum_{i=1}^d\varphi(i)\ -1\]
于是可以考虑对\(f(\left \lfloor \frac{n}{i} \right \rfloor)\)分块
所以我们需要的是\(\varphi(i^2)\)的前缀和
还有一个非常显然的东西就是
\[\varphi(i^2)=i\varphi(i)\]
考虑\(\varphi\)的公式
令\(n\)有
\[n=\prod\limits_{i=1}^{N}p_{i}^{r_{i}}\]
则
\[\varphi(n)=\prod\limits_{i=1}^{N}(p_i-1)p_i^{r_i-1}\]
\[\varphi(n^2)=\prod\limits_{i=1}^{N}(p_i-1)p_i^{2r_i-1}=\prod\limits_{i=1}^{N}(p_i-1)p_i^{r_i-1}p_i^{r_i}\]
\[=\prod\limits_{i=1}^{N}(p_i-1)p_i^{r_i-1}\times \prod\limits_{i=1}^{N}p_{i}^{r_{i}}=\varphi(n)\times n\]
于是设
\[F(i)=i\varphi(i)\]
于是
\[Ans=\sum_{i=1}^nf(\left \lfloor \frac{n}{i} \right \rfloor)F(i)\]
求\(F\)函数的前缀和即可
由于数据范围很大,考虑杜教筛
根据一番暴力枚举我们应该让\(F\)和\(id\)卷一下
\[(F\times id)(i)=\sum_{d|i}d\varphi(d)\frac{i}{d}\]
\[=i\sum_{d|i}\varphi(d)=i^2\]
拿出杜教筛套路
\[S(n)=\sum_{i=1}^n(F\times id)(i)-\sum_{i=2}^nid(i)S(\left \lfloor \frac{n}{i} \right \rfloor)\]
\[=\frac{n(n+1)(2n+1)}{6}-\sum_{i=2}^nid(i)S(\left \lfloor \frac{n}{i} \right \rfloor)\]
不就没了吗
当然\(\left \lfloor \frac{n}{i} \right \rfloor\)也会很大,所以还要杜教筛一个欧拉函数
代码
怎么可能有