首页 > 其他 > 详细

P2561 [AHOI2002]黑白瓷砖

时间:2019-02-28 10:32:29      阅读:154      评论:0      收藏:0      [点我收藏+]

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

技术分享图片

技术分享图片

技术分享图片

\(\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)

技术分享图片

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

技术分享图片

所以答案就是\(x=\lceil \frac {\frac {n*(n+1)}{2}}{3}\rceil=\lceil \frac {n*(n+1)}{6}\rceil\)

注意,旋转0度是\(y=\frac{n*(n + 1)}{2}\)

翻转,中间对称的不变,总共\(\lceil \frac n 2 \rceil\)个,于是方案为\(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)

~~~~极简Python3

P2561 [AHOI2002]黑白瓷砖

原文:https://www.cnblogs.com/olinr/p/10448084.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!