[codevs 2926] 黑白瓷砖(2002年安徽省队选拔赛)

描述

题解:

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;}

任何业绩的质变都来自于量变的积累。

[codevs 2926] 黑白瓷砖(2002年安徽省队选拔赛)

相关文章:

你感兴趣的文章:

标签云: