\(\color{#0066ff}{ 题目描述 }\)

一个圈上有n个珠子,有三种颜色可以染,问本质不同的方案数(通过旋转和翻转重合的算一种)

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

多组数据,每次一个n,以-1结束

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

每组数据输出一行一个数表示方案数

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

4
5
-1

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

21
39

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

\(n\le 23\)

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

---------------------以下内容来自lzxkj的md。。。。qwq主要是我懒得写

我们考虑一下存在多少种置换 旋转 翻转

首先我们可以讨论\(n\)种旋转的置换

\[ans+=\sum_{i=0}^{n-1}3^{gcd(i,n)}
\]

这道题\(n≤24\) 所以可以直接写暴力的写法

接下来考虑翻转 至于翻转 我们需要讨论\(n\)的奇偶性

\(n\)为奇数时 当前的圆环可以选择穿过一个点的直线作为对称中心进行翻转

**对称的点必须相同 然后中间的那个点可以随便 **

同时每一个点作为对称点都存在相同数量的方案

所以答案是

\[3*3^{\lfloor \frac{n}{2}\rfloor}=3^{\lfloor \frac{n}{2}\rfloor +1}
\]

\(n\)为偶数时 当前的圆环可以选一条穿过两个点的直线或者一个点也没有穿过的直线作为对称轴

对于左图 我们可以选择\(\frac{n}{2}\)个点

**因为一个被选择的时候另一个也会被选择 ** 所以我们可以仅考虑\(\frac{n}{2}\)个点

还是**对称的点必须相同 然后中间的那两个点可以随便 **

对于右图 我们也是考虑\(\frac{n}{2}\)个空隙 理由同上

还是**对称的点必须相同 然后中间。。。。。。 **

\[\frac{n}{2}* (3*3*3^{\frac{n-2}{2}}+3^\frac{n}{2})=\frac{n}{2}*(3^\frac{n+2}{2}+3^\frac{n}{2})
\]

最后一共是有\((2*n)​\)个置换

下面是我的代码(_)

#include<cstdio>
#include<cctype>
#define LL long long
LL in() {
char ch; LL x = 0, f = 1;
while(!isdigit(ch = getchar()))(ch == '-') && (f = -f);
for(x = ch ^ 48; isdigit(ch = getchar()); x = (x << 1) + (x << 3) + (ch ^ 48));
return x * f;
}
LL ans, n, m = 3;
LL ksm(LL x, LL y) {
LL re = 1LL;
while(y) {
if(y & 1) re = re * x;
x = x * x;
y >>= 1;
}
return re;
}
LL gcd(LL x, LL y) { return y? gcd(y, x % y) : x; }
int main() {
while(~(n = in())) {
if(!n) {
puts("0");
continue;
}
ans = 0;
for(int i = 0; i < n; i++) ans += ksm(m, gcd(i, n));
if(n & 1) ans += m * n * ksm(m, (n - 1) >> 1LL);
else ans += (n >> 1LL) * (ksm(m, n >> 1LL) + m * m * ksm(m, (n - 2) >> 1LL));
ans /= (n << 1LL);
printf("%lld\n", ans);
}
return 0;
}

Necklace of Beads POJ - 1286的更多相关文章

  1. poj 1286 Necklace of Beads poj 2409 Let it Bead HDU 3923 Invoker <组合数学>

    链接:http://poj.org/problem?id=1286 http://poj.org/problem?id=2409 #include <cstdio> #include &l ...

  2. 数学计数原理(Pólya):POJ 1286 Necklace of Beads

    Necklace of Beads Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7763   Accepted: 3247 ...

  3. POJ 1286 Necklace of Beads(项链的珠子)

    Necklace of Beads Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7874   Accepted: 3290 ...

  4. poj 1286 Necklace of Beads &amp; poj 2409 Let it Bead(初涉polya定理)

    http://poj.org/problem?id=1286 题意:有红.绿.蓝三种颜色的n个珠子.要把它们构成一个项链,问有多少种不同的方法.旋转和翻转后同样的属于同一种方法. polya计数. 搜 ...

  5. POJ 1286 Necklace of Beads(Polya简单应用)

    Necklace of Beads 大意:3种颜色的珠子,n个串在一起,旋转变换跟反转变换假设同样就算是同一种,问会有多少种不同的组合. 思路:正规学Polya的第一道题,在楠神的带领下,理解的还算挺 ...

  6. Necklace of Beads(polya计数)

    Necklace of Beads Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7451   Accepted: 3102 ...

  7. hdu 1817 Necklace of Beads(Polya定理)

    Necklace of Beads Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  8. POJ 1286 Pólya定理

    Necklace of Beads Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 9162   Accepted: 3786 ...

  9. poj 1286 polya定理

    Necklace of Beads Description Beads of red, blue or green colors are connected together into a circu ...

随机推荐

  1. 侯捷STL学习(六)--深入list && Iterator traits

    第十三,四节 深度探索list(上,下) list Gnu2.9源代码实现 注意node代码和图示的位置 实现前闭后开,增加一个空白节点 用的分配器alloc Iterator智能指针,需要知道结点n ...

  2. c# 实用精华知识点全解

    本文介绍c#的实用知识点 写在前面(通识) vs常用快捷键 F5 调试运行程序 ctrl F5 不调试运行程序 F11 逐条语句调试 F10 逐过程调试程序 注释快捷键 ctrl + k + c 代码 ...

  3. 【Java】java.util.Objects 源码学习

    2017-02-10 by 安静的下雪天  http://www.cnblogs.com/quiet-snowy-day/p/6387321.html    本篇概要 Objects 与 Object ...

  4. 问题:web.net页面超时;结果:设置ASP.NET页面的运行超时时间详细到单个页面及站点

    设置ASP.NET页面的运行超时时间详细到单个页面及站点 这篇文章主要介绍了如何设置ASP.NET页面的运行超时时间,包括全局超时时间.单个站点超时时间.单个页面请求超时时间,需要的朋友可以参考下 全 ...

  5. leetcode398

    public class Solution { int[] nums; Random rnd; public Solution(int[] nums) { this.nums = nums; this ...

  6. CSS3 高级属性

    尽管现代浏览器已经支持了众多的CSS3属性,但是大部分设计师和开发人员貌似依然在关注于一些很“主流”的属性,如border-radius.box-shadow或者transform等.它们有良好的文档 ...

  7. 新创建的maven项目,显示的jdk版本与使用的不一致

    解决:是在安装的maven中的setting.xml配置文件中添加 在setting.xml配置文件中的<profiles></profiles>这个元素中加以下代码 如果加上 ...

  8. Oracle之DBMS_SQL包用法详解

    对于一般的(select)操作,如果使用动态的sql语句则需要进行以下几个步骤:open  cursor--->parse---> bind  variable  ---> defi ...

  9. Arduino Uno 在win7 64位下的驱动问题

    1.解压[mdmcpq.inf_amd64_neutral_fbc4a14a6a13d0c8.rar],将[mdmcpq.inf_amd64_neutral_fbc4a14a6a13d0c8]文件夹复 ...

  10. Ros学习——导航

    1.导航框架 在总体框架图中可以看到,move_base提供了ROS导航的配置.运行.交互接口,它主要包括两个部分:      (1) 全局路径规划(global planner):根据给定的目标位置 ...