zoukankan      html  css  js  c++  java
  • P2561 [AHOI2002]黑白瓷砖

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

    img

    img

    img

    (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} ceil=lceil frac {n*(n+1)}{6} ceil)

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

    翻转,中间对称的不变,总共(lceil frac n 2 ceil)个,于是方案为(z=frac{frac{n*(n+1)}{2}-lceil frac{n}{2} ceil}{2}+lceil frac{n}{2} ceil=frac{1}{2}(frac{n*(n+1)}{2}+lceil frac{n}{2} ceil))

    因此(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)
    
  • 相关阅读:
    学习进度条
    软件工程期末总结
    实验四 主存空间的分配与回收
    学术诚信与道德
    《构建之法》第八、九、十章读后感
    实验三、进程调度模拟程序实验
    《构建之法》第六七章读后感
    Scrum团队成立3.0
    0428-项目再开发2.0
    作业调度模拟程序
  • 原文地址:https://www.cnblogs.com/olinr/p/10448084.html
Copyright © 2011-2022 走看看