描述
题解:
Polya定理的应用。 由于第一次做polya定理的题,故要写的详细些。 首先可以从题目中读到三个置换以及一个不动置换:
开始我本以为这样就算完成任务,,就拿polya定理演算了一遍,结果发现n=2,n=3都不对。后来才明白现在的置换群中不满足封闭性。比如先顺时针旋转再左右翻转后的图形就不包含在内。所以还要增加两个斜向的翻转。
现在可以统计每个置换中循环的个数了:
接下来根据polya定理求最终结果。因为旋转有两个置换,翻转有三个(左右、斜向两个),还有一个不动置换,所以最后结果是
代码:
其实需要高精,但我没打。
;int main() {int n;m = (s + (n + 1) / 2) / 2; //一个翻转置换的循环数 printf(“%d\n”, (2*(1<<((s+2)/3)) + 3*(1<<m) + (1<<s)) / 6);return 0;}
任何业绩的质变都来自于量变的积累。