【模板】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\)是考虑到离散化的复杂度

posted @ 2024-08-09 10:49  最爱丁珰  阅读(2)  评论(0编辑  收藏  举报