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