poj2409 Let it Bead
| Time Limit: 1000MS | Memory Limit: 65536K | |
| Total Submissions: 5397 | Accepted: 3609 |
Description
A bracelet is a ring-like sequence of s beads each of which can have one of c distinct colors. The ring is closed, i.e. has no beginning or end, and has no direction. Assume an unlimited supply of beads of each color. For different values of s and c, calculate the number of different bracelets that can be made.
Input
Output
For each test case output on a single line the number of unique bracelets. The figure below shows the 8 different bracelets that can be made with 2 colors and 5 beads.Sample Input
1 1
2 1
2 2
5 1
2 5
2 6
6 2
0 0
Sample Output
1
2
3
5
8
13
21 题意:每次给你m种颜色,n个珠子要成一个环,可以翻转也可以旋转,要问本质不同的染色方案有几种 首先,对于每次旋转i,循环节一定是有gcd(i,n)个,首先,如果对于一个串一直旋转i的长度,那么回到最初的时候一定是旋转了 lcm(i,n)/i 次,那么任意一个节点,一定经过了lcm(i,n)/i个节点,那么这么多个节点,都是等价类E,由于环上每个等价类的元素数量都相等,所以循环节个数为 n*i/(lcm(i,n)=gcd(i,n) 到这里为止,旋转的情况我们已经考虑过了,我们再考虑一下翻转的情况:
对于奇数,翻转情况只有一个点,和它对面的中点作为对称轴,一共n种,循环节为n/2+1 对于偶数,有两种情况,一个是两个对称点构成对称轴,n/2种,循环节为n/2+1
一个是两个中点构成对称轴,也是n/2种,循环节为n/2
综上,所有的置换总数有2*n种,这时候我们只需要利用polay计数就可以AC了 2016-06-10:PKUSC居然考了这题,TAT还好有学过。。
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<iostream>
#define ll long long
int n,m;
int Pow(int x,int y){
int res=;
while (y){
if (y%) res*=x;
x*=x;
y/=;
}
return res;
}
int gcd(int a,int b){
if (b==) return a;
else return gcd(b,a%b);
}
int main(){
while (scanf("%d%d",&m,&n)!=EOF){
if (n==&&m==) return ;
int ans=;
for (int i=;i<n;i++)
ans+=Pow(m,gcd(i,n));
if (n%){
ans+=n*Pow(m,(n/)+);
ans/=*n;
printf("%d\n",ans);
}else{
ans+=n/*Pow(m,(n/)+);
ans+=n/*Pow(m,n/);
ans/=*n;
printf("%d\n",ans);
}
}
}
poj2409 Let it Bead的更多相关文章
- POJ2409 Let it Bead(Polya定理)
Let it Bead Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6443 Accepted: 4315 Descr ...
- Burnside引理和polay计数 poj2409 Let it Bead
题目描述 "Let it Bead" company is located upstairs at 700 Cannery Row in Monterey, CA. As you ...
- poj2409:Let it Bead(置换群 polya定理)
题目大意:长度为n的项链,要染m种颜色,可以通过旋转或翻转到达的状态视为同一种,问有多少种染色方案. 学了一波polya定理,发现很好理解啊,其实就是burnside定理的扩展. burnside定理 ...
- Burnside引理与Polya定理 学习笔记
原文链接www.cnblogs.com/zhouzhendong/p/Burnside-Polya.html 问题模型 有一个长度为 $n$ 的序列,序列中的每一个元素有 $m$ 种取值. 如果两个序 ...
- polay计数原理
公式: Burnside引理: 1/|G|*(C(π1)+C(π2)+C(π3)+.....+C(πn)): C(π):指不同置换下的等价类数.例如π=(123)(3)(45)(6)(7),X={1, ...
- 【POJ2409】Let it Bead Pólya定理
[POJ2409]Let it Bead 题意:用$m$种颜色去染$n$个点的环,如果两个环在旋转或翻转后是相同的,则称这两个环是同构的.求不同构的环的个数. $n,m$很小就是了. 题解:在旋转$i ...
- 【poj2409】 Let it Bead
http://poj.org/problem?id=2409 (题目链接) 题意 一个n个珠子的项链,每个珠子可以被染成t种颜色.项链可以翻转和旋转,问不同的染色方案数. Solution Pólya ...
- 【poj2409】Let it Bead Polya定理
题目描述 用 $c$ 种颜色去染 $r$ 个点的环,如果两个环在旋转或翻转后是相同的,则称这两个环是同构的.求不同构的环的个数. $r·c\le 32$ . 题解 Polya定理 Burnside引理 ...
- POJ 2409 Let it Bead(Polya简单应用)
Let it Bead 大意:给你m种颜色,n个珠子串起来.旋转跟反转同样算同样,问有多少种不同的涂色组合方式. 思路:Polya的简单应用. /*************************** ...
随机推荐
- 智能卡安全机制比较系列(三) MPCOS
MPCOS是金普斯早期推出的一款多应用支付芯片卡操作系统,支持ISO7816以及PCOS的数据格式和命令.MPCOS具有两级目录文件结构,即MF下可以有一级DF,每个DF下最多可创建63个EF. MP ...
- MVC分部试图传参数
@Html.Partial("_NavMenuPage", new ViewDataDictionary { { "proimshowId",imshowI ...
- http2.0 相对于 http1.1的优势
1.http2.0完全是多路复用的,只需一个连接就可实现并行 可以将不同的请求夹杂在一起,只需一个连接就能加载一个页面. 2.可以让服务器将响应主动推动到客户端缓存中 当浏览器请求一个网页时,服务器除 ...
- (转)Android创建桌面快捷方式两种方法
[IT168技术]Android在桌面上生成快捷方式有两种情况,一种是直接在桌面直接生成;一种是长按桌面,在弹出的快捷菜单中生成. 谈谈在桌面上直接生成.个人觉得这个比较爽快,既然都是快捷方式了干嘛还 ...
- POJ 3450 Corporate Identity (KMP+暴搞)
题意: 给定N个字符串,寻找最长的公共字串,如果长度相同,则输出字典序最小的那个. 找其中一个字符串,枚举它的所有的字串,然后,逐个kmp比较.......相当暴力,可二分优化. #include & ...
- IOS的一个带动画的多项选择的控件(一)
先上效果图: 这个程序分2个层次,一个是顶部的带UITextField的bar,一个是下拉选择的view,下拉选择的view带有4个自己定义的UIView 我们先定义一个UIViewControlle ...
- Android怎么让一个service开机自动启动
1.首先开机启动后系统会发出一个Standard Broadcast Action,名字叫android.intent.action.BOOT_COMPLETED,这个Action只会发出一次. 2. ...
- C#基础:集合
C#中的数组实现为 System.Array 类的实例,它们只是集合类(Collection Classes)中的一种类型.集合类一般用于处理对象列表,其功能比简单数组要多,功能大多是通过实现 ...
- 分享一个通用的分页SQL
又很久没写博客,今天记录一个SQLserver通用分页存储过程(适用于SqlServer2000及以上版本) 1.支持连表 2.支持条件查询 USE [MYDB] GO /****** Object: ...
- Java中书写要注意的地方
Java的命名规则:以字母.下划线(_)或$符号开头,其后跟任意数目的字母.数字.下划线和$符号. 注意: 数字不能作为标识符的开头: 除了下划线与$符号以外,其余的符号不能使用: 不能使用关键字作 ...