burnside引理和polya定理
burnside引理:$ans=\frac{1}{n} *(f(1)+...f(n))$
$f(i)$表示在i置换下本质不同排列的个数
polya定理:
利用本质不同位置的个数去计算$f(i)$
对于长度为n的序列移动i之后显然循环节是$gcd(n,i)$
考虑对于一个因数d,显然$gcd(n,i)=d$的个数是$phi(n/d)$
那么其实问题就是对于n的所有因数d,解决循环节长度至少是d(即循环节长度是d的倍数也可)的情况下的方案数
$ans=\frac{1}{n}*(\sum_{d|n}^{} {f(d)*phi(n/d)})$
例题:
1.https://www.luogu.com.cn/problem/P4980
2.https://codeforces.com/contest/1630/problem/E