题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1812
这道题我们要用到的是Pólya定理(如果不懂Pólya定理的同学,欢迎观看小编的另一篇博客)。
此题置换的方式一共有8种置换方式,大类可以分为两个大类:旋转和翻折。我们求出每一种置换方式的循环节个数就可以了。
1.旋转:
旋转0度(360度):每一个格子都是到自己的一个循环节,所以循环节个数为n*n。
旋转90度(顺时针):
(1)如果n为偶数,那么每一个格子都可以旋转四次回到自己这里,所以循环个数为(n*n)/4
(2)如果n为奇数,那么除了正中间那个格子都和偶数时一样,但中间那个单独的格子也是一个循环节,所以循环节个数为:(n*n-1)/4+1。
旋转90度(逆时针):同上偶数(n*n)/4 奇数为(n*n-1)/4+1。
旋转180度:
(1)如果n为偶数,那么每一个格子都可以旋转两次回到自己这里,所以循环节个数为(n*n)/2。
(2)如果n为奇数,那么除了正中间那个格子都和偶数时一样,但中间那个单独的格子也是一个循环节,所以循环节个数为:(n*n-1)/2+1。
2.翻折:
沿着中心线翻折(两个方向):
(1)如果n为偶数,那么每一个格子都试翻折两次回到自己这里,所以循环节个数为(n*n)/2。
(2)如果n为奇数,那么除了中间那一列的格子都和偶数时一样,但中间那列格子自己也会有个循环节,所以循环节的个数为:(n*n-n)/2+n。
沿着对角线翻折(两个方向):除了对角线上的格子自己就是一个循环节,其他的格子都是每翻折两次回到自己这里,所以循环节就是(n*n-n)/2+n。
有了这些循环节后,我们就可以直接套Pólya定理公式得到答案了。
PS.此题属于大数据。