纯板子题,主要是讲一下这题如何快速求 ϕ \phi ϕ
化简之后要求的是 ∑ d ∣ n n d ϕ ( n d ) \underset{d|n}{\sum}n^d\phi(\frac{n}{d}) d∣n∑ndϕ(dn)
像这个求约数的 ϕ \phi ϕ可以像下面这么求:
先将 n n n质因数分解,对每个质因数 p p p,求出 ϕ ( p ) , ϕ ( p 2 ) , . . . , ϕ ( p c ) \phi(p),\phi(p^2),...,\phi(p^c) ϕ(p),ϕ(p2),...,ϕ(pc)(每个都可以 O ( 1 ) O(1) O(1)求解);然后再用dfs枚举每个质数的指数构成某一个约数,利用积性函数的性质就好了
时间复杂度为 O ( d ( n ) log n ) O(d(n)\log n) O(d(n)logn),其中 d ( n ) d(n) d(n)为 n n n的约数个数, log n \log n logn是考虑到离散化的复杂度