$ \color{#0066ff}{ 题目描述 }$

P2561 [AHOI2002]黑白瓷砖

P2561 [AHOI2002]黑白瓷砖

P2561 [AHOI2002]黑白瓷砖

\(\color{#0066ff}{输入格式}\)

文件中以一行的形式存放一个正整数 n , n ≤ 20 。

\(\color{#0066ff}{输出格式}\)

以一行的形式输出问题的解 s (解的位数不超过 200 位)。

\(\color{#0066ff}{输入样例}\)

1
 
2

\(\color{#0066ff}{输出样例}\)

2
        
4

\(\color{#0066ff}{数据范围与提示}\)

none

\(\color{#0066ff}{题解}\)

显然直接上Polya

不难发现有6种置换

旋转0,120,240度,还有三种对称轴的翻转

lzxkj)

P2561 [AHOI2002]黑白瓷砖

对于旋转来说,肯定是三个一循环,但是会存在下面的情况

P2561 [AHOI2002]黑白瓷砖

\(x=\lceil \frac {\frac {n*(n+1)}{2}}{3}\rceil=\lceil \frac {n*(n+1)}{6}\rceil\)

\(y=\frac{n*(n + 1)}{2}\)

\(z=\frac{\frac{n*(n+1)}{2}-\lceil \frac{n}{2}\rceil}{2}+\lceil \frac{n}{2}\rceil=\frac{1}{2}(\frac{n*(n+1)}{2}+\lceil \frac{n}{2}\rceil)\)

\(ans=\frac{2^y+2*2^x+3*2^z}{6}\)

显然并没有取模

直接上Python!

import math
n = int(input())
tot = n * (n + 1) >> 1;
x = tot
y = math.ceil(n * (n + 1) / 6)
z = (tot + math.ceil(n / 2)) >> 1;
ans = (2 ** x + 2 * 2 ** y + 3 * 2 ** z) // 6;
print(ans)

相关文章: