Necklace of Beads POJ - 1286
\(\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\)种旋转的置换
\]
这道题\(n≤24\) 所以可以直接写暴力的写法
接下来考虑翻转 至于翻转 我们需要讨论\(n\)的奇偶性
\(n\)为奇数时 当前的圆环可以选择穿过一个点的直线作为对称中心进行翻转
**对称的点必须相同 然后中间的那个点可以随便 **
同时每一个点作为对称点都存在相同数量的方案
所以答案是
\]
\(n\)为偶数时 当前的圆环可以选一条穿过两个点的直线或者一个点也没有穿过的直线作为对称轴
对于左图 我们可以选择\(\frac{n}{2}\)个点
**因为一个被选择的时候另一个也会被选择 ** 所以我们可以仅考虑\(\frac{n}{2}\)个点
还是**对称的点必须相同 然后中间的那两个点可以随便 **
对于右图 我们也是考虑\(\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的更多相关文章
- 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 ...
- 数学计数原理(Pólya):POJ 1286 Necklace of Beads
Necklace of Beads Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 7763 Accepted: 3247 ...
- POJ 1286 Necklace of Beads(项链的珠子)
Necklace of Beads Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 7874 Accepted: 3290 ...
- poj 1286 Necklace of Beads & poj 2409 Let it Bead(初涉polya定理)
http://poj.org/problem?id=1286 题意:有红.绿.蓝三种颜色的n个珠子.要把它们构成一个项链,问有多少种不同的方法.旋转和翻转后同样的属于同一种方法. polya计数. 搜 ...
- POJ 1286 Necklace of Beads(Polya简单应用)
Necklace of Beads 大意:3种颜色的珠子,n个串在一起,旋转变换跟反转变换假设同样就算是同一种,问会有多少种不同的组合. 思路:正规学Polya的第一道题,在楠神的带领下,理解的还算挺 ...
- Necklace of Beads(polya计数)
Necklace of Beads Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 7451 Accepted: 3102 ...
- hdu 1817 Necklace of Beads(Polya定理)
Necklace of Beads Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- POJ 1286 Pólya定理
Necklace of Beads Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 9162 Accepted: 3786 ...
- poj 1286 polya定理
Necklace of Beads Description Beads of red, blue or green colors are connected together into a circu ...
随机推荐
- web基础 (三) CSS
css 层叠样式表 CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明. selector { property: value; property: value; ... property: ...
- 目录扫描工具-Dirsearch
下载项目,并打开 ┌─[root@sch01ar]─[/sch01ar] └──╼ #git clone https://github.com/maurosoria/dirsearch ┌─[root ...
- 关于JS正则表达式的一篇文章(转载)
原文:http://www.cnblogs.com/xujh/archive/2008/08/21/1273525.html <input onkeypress="return ...
- DAY10-MYSQL表操作
一 存储引擎介绍 存储引擎即表类型,mysql根据不同的表类型会有不同的处理机制 http://www.cnblogs.com/guoyunlong666/p/8491702.html 二 表介绍 表 ...
- css水平居中(一)
第一种方法:使用text-align属性. 看到一篇博客,也不知道是不是我理解的问题,博客上说text-align可以是内联元素水平居中,我感觉这样的说法是不是有些不准确. text-align属性规 ...
- <!doctype html>这个是干什么的???
html5标准网页声明,原先的是一串很长的字符串,现在是这个简洁形式,支持html5标准的主流浏览器都认识这个声明.表示网页采用html5
- springmvc配置式开发下的视图解析器
多个视图解析器优先级:
- CSS技巧: CSS隐藏文字的方法(CSS text-indent: -9999px;)
建站过过程中朋友喜欢把网站名称用H1表示,但从美观考虑,要用logo图片来代替h1,这时需要隐藏h1内的这段文字,但又不能对搜索引擎不友好,否则就失去了定义h1标签的意义. 在CSS中如何以图代字,找 ...
- 文科妹学 GitHub 简易教程(转)
文科妹学 GitHub 简易教程 #什么是 Github ?必须要放这张图了!!! Git 是由 Linux 之父 Linus Tovalds 为了更好地管理linux内核开发而创立的分布式版 ...
- [转]MySQL5.6.22 安装
原文路径 http://jifeng3321.iteye.com/blog/2181517?utm_source=tuicool 由于一直做银行项目,所以一直在用oracle和db2,但最近自己想 ...