棋子染色问题(burnside引理或者polya定理)
来源:互联网 发布:js修改input的value 编辑:程序博客网 时间:2024/06/06 05:36
最近笔试的时候遇到一个问题,题目是:用两种颜色去染排成一个圈的8个棋子,如果可以通过旋转得到则只算一种,问一共有多少种染色方式 ?
当时因为时间的关系,没有做出来,后来仔细考虑了一下,这是组合数学的题目。
重新回顾了下,组合数学老师上课的PPT,果然有这类题目。
让我们一起先理解下面两个题目吧。
而NYOJ也有一道很类似的题目。
NYOJ 280:一盒有红、蓝、绿三种颜色的珠子,每种颜色珠子的个数都大于24,现在LK想用这一盒珠子穿出一条项链,项链上的珠子个数为n(0<=n<=24),请你帮她计算一下一共可以用这一盒珠子可以穿出多少条不同的项链。通过旋转、翻转达到同一种状态的被认为是相同的项链。
解答思路可以参考:http://blog.csdn.net/u013050857/article/details/43833353
而我们这个题目相比之下,就只有旋转,没有翻转操作了。
主要利用GCD求出每次顺时间旋转1~N个棋子的循环节数就OK。
#include <iostream>#include <cstdio>#include <cmath>using namespace std;int gcd(int a,int b){ while(a%b){ int t=a; a=b; b=t%b; } return b;}int main(){ int n,m; cin>>n>>m; int sum=0; for(int i=1;i<=n;i++){ sum+=pow(m,gcd(n,i)); } printf("%d\n",sum/n); return 0;}
写出代码,输入 8 2
求得的36即为答案。
0 0
- 棋子染色问题(burnside引理或者polya定理)
- Burnside引理和Polya定理
- Burnside引理与Polya定理
- Burnside引理和Polya定理
- Burnside引理和Polya定理
- Burnside引理和Polya定理
- Burnside引理与Polya定理
- Polya定理染色问题 (poj 1286)
- burnside引理和polya定理的各种关系
- burnside引理与Polya定理计数法
- Polya定理,Burnside引理
- Polya定理,Burnside引理
- Polya定理,Burnside引理
- polya/burnside定理入门
- Polya定理,burnside引理
- Burnside引理和Polya定理 & [bzoj 1004] [HNOI2008]Cards:Burnside引理,动态规划
- poj1286-polya计数、burnside定理
- #置换#Burnside引理Polya定理
- 227. Basic Calculator II
- 计蒜客 11065 Candy
- 利用AppInventor读取天气预报接口(完整版)
- 菜鸟第一次写博客
- Struts2:ClassNotFoundException: org...dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
- 棋子染色问题(burnside引理或者polya定理)
- Git小记
- 4537: [Hnoi2016]最小公倍数|分块
- 一道关于位段及大小端的面试题
- HashMap源码注解 之 resize()方法(七)
- 我是钓~!~!~!@鱼测试
- widget点击进入应用遇到的问题
- VS2012 MFC 相关问题
- 搜索——1015