先要推式子
\[ \begin{aligned} \varphi(x)\varphi(y)&=(x\prod_{p|x}\frac{p-1}p)(y\prod_{p|y}\frac{p-1}p)\\ &=(\prod_{p|xy}\frac{p-1}p)(\prod_{p|\gcd(x,y)}\frac{p-1}p)xy\\ &=\varphi(xy)\varphi(\gcd(x,y))xy \end{aligned} \\\Rightarrow \varphi(xy)=\frac{\varphi(x)\varphi(y)\gcd(x,y)}{\varphi(\gcd(x,y))}\\ \]
接着堆式子
\[ \begin{aligned} ans&=\sum_i\sum_{i}\varphi(a_ia_j)dis(i,j)\\ &=\sum_{d=1}^n\frac{d}{\varphi(d)}\sum_i\sum_j\varphi(a_i)\varphi(a_j)dis(i,j)[\gcd(a_i,a_j)=d] \\ f(d)&=\sum_i\sum_j...[\gcd(a_i,a_j)=d] \\ g(d)&=\sum_{d|x}f(x)\\ &=\sum_i\sum_j...[d|\gcd(a_i,a_j)]\\ &=\sum_{d|a_i}\sum_{d|a_j}\varphi(a_i)\varphi(a_j)(dep_i+dep_j-2dep_{lca(i,j)})\\ &=\sum_{d|a_i}\varphi(a_i)\sum_{d|a_j}\varphi(a_j)(dep_i+dep_j-2dep_{lca(i,j)})\\ &=2\sum_{d|a_i}\varphi(a_i)dep_i\sum_{d|a_j}\varphi(a_j)-2\sum_{d|a_i}\varphi(a_i)\sum_{d|a_j}\varphi(a_j)*dep_{lca(i,j)} \\ f(d)&=\sum_{d|x}\mu(\frac{x}d)g(x)=\sum_{i=1}^{\lfloor\frac{n}d\rfloor}\mu(i)g(di) \\ ans&=\sum_{d=1}^n\frac{d}{\varphi(d)}f(d)\\ &=\sum_{d=1}^n\frac{d}{\varphi(d)}\sum_{i=1}^{\lfloor\frac{n}d\rfloor}\mu(i)g(di)\\ &=\sum_{T=1}^ng(T)\sum_{d|T}\mu(\frac{T}d)\frac{d}{\varphi(d)} \\ h(T)&=\sum_{d|T}\mu(\frac{T}d)\frac{d}{\varphi(d)} \\ \end{aligned} \]
留意到\(h(T)\)能夠直接篩。而\(g(T)\)也是能夠「篩」的(創建虛樹,自底向上的帶權根徑覆蓋),而後把這倆玩意兒數乘……spa
簡直絕了,複雜度是\(O(b\log n)\)級別的class
代碼留坑……gc