首先考虑旋转和颜色旋转
旋转可以看成置换群,为了方便,给出一下约定
(
a
1
a
2
a
3
.
.
.
a
n
1
2
3
.
.
.
n
)
=
(
a
1
,
a
2
.
.
.
a
n
)
\begin{pmatrix} a_1&a_2&a_3&...&a_n\\1&2&3&...&n\end{pmatrix}=(a_1,a_2...a_n)
(a11a22a33......ann)=(a1,a2...an)
那么旋转可以这么搞,比如向右旋转一位就是
(
2
,
3...
n
,
1
)
(2,3...n,1)
(2,3...n,1)
然后发现所有的旋转操作组成了一个置换群
如果你不会Burnside引理那么你该先去学习一下
不考虑其他的,答案就是
1
n
∑
i
=
1
n
m
gcd
(
i
,
n
)
\displaystyle\frac{1}{n}\sum_{i=1}^nm^{\gcd(i,n)}
n1i=1∑nmgcd(i,n)
为啥呢?
其实很简单,考虑旋转
i
i
i位的置换
(
1
+
i
,
2
+
i
.
.
.
(
n
−
i
)
+
i
,
1
,
2...
i
)
(1+i,2+i...(n-i)+i,1,2...i)
(1+i,2+i...(n−i)+i,1,2...i)
它一共有
g
c
d
(
n
,
i
)
gcd(n,i)
gcd(n,i)个循环。
什么是循环?就是把每个置换上下对应的边连上,然后看有多少个环。
假设有
k
k
k个环。
显然,照这样旋转
n
n
n就可以回到原来的样子。
然后……没有然后了?
错了,其实不用循环n次,只需要循环
n
/
k
n/k
n/k次(自己想想为什么)
所以
n
/
k
∗
i
=
n
∗
?
n/k*i=n*?
n/k∗i=n∗?
所以可以得到
k
=
gcd
(
n
,
i
)
k=\gcd(n,i)
k=gcd(n,i)(自己想想为什么)
再考虑颜色旋转。
其实也不难,每个循环都告诉你了,那么每个循环的长度就是
n
/
k
n/k
n/k
然后根据刚才的套路,式子出来了,就是
1
n
×
m
∑
i
=
1
n
m
k
gcd
(
m
,
n
/
k
)
\displaystyle\frac{1}{n\times m}\sum_{i=1}^nm^k\gcd(m,n/k)
n×m1i=1∑nmkgcd(m,n/k),其中
k
=
gcd
(
n
,
i
)
k=\gcd(n,i)
k=gcd(n,i)
再考虑翻转配合颜色旋转。
什么,你可能会问为什么不用考虑翻转+旋转的情况。
哦,那是因为如果你可以发现最后只不过是换了一个轴来进行翻转操作。
是不是很妙?
然后化简完之后发现可以用Pollard Rho快速搞一搞,然后就没了。
留点给读者独立思考的机会吧……
马保国:中国武功讲究点到为止。