题意
用n种颜色对n个珠子构成的环上色, 旋转后相同的只算一种, 求本质不同的着色方案数
分析
由 $burnside$ 定理可知, 有n个置换, 每个置换使得着色不变的着色方案个数有 $gcd(n,i)$ 个
由于$n\le 10^9$那么不能直接枚举, 那么
$$
\begin{aligned}
ans&=\frac{1}{n}\cdot \sum_{i=1}^{n}n^{gcd(n,i)}\\
&=\frac{1}{n}\cdot \sum_{d|n}\cdot n^{d}\cdot\sum_{i=1}^{n} \varepsilon(gcd(n,i)=d)\\
&=\frac{1}{n}\cdot \sum_{d|n}\cdot n^{d}\cdot\sum_{i=1}^{\frac{n}{d}} \varepsilon(gcd(\frac{n}{d},i)=1)\\
&=\frac{1}{n}\cdot\sum_{d|n}\cdot n^{d}\cdot\varphi(\frac{n}{d})\\
&=\sum_{d|n}\cdot n^{d-1}\cdot\varphi(\frac{n}{d})
\end{aligned}
$$
此时不能直接用筛法求出欧拉函数值并存下来, 所以需要在线求欧拉函数
已知
$$n=\sum_{d|n}\varphi(d)$$
由莫比乌斯进行反演得
$$\varphi(n)=\sum_{d|n} \mu(d) \cdot (\frac{n}{d})$$
又因为$\mu(n)$的定义
$$\mu(n) =
\begin{cases}
1, & \text{$n$ = 1} \\
(-1)^k, & \text{$n$无平方因子} \\
0, & \text{其它}
\end{cases}
$$
所以求$\varphi(n)$时,并不需要那些有平方因子的$d$
由唯一分解定理得
$$n=a_1^{p_1}\cdot a_2^{p_2}\cdot a_3^{p_3}\cdots a_k^{p_k}$$
其中的$a_i$为质数
那么我们只需要枚举一下由几个$a_i$相乘得到的$d$再加上一个$d=1$的情况即可
代码
1 | #include <cstdio> |