题目链接:http://poj.org/problem?id=2409

题意:输入 m, n 表示有 m 种颜色,要构造一个长度为 n 的手环,旋转和对称的只算一种,问能组成多少个不同的手环.

思路:polya 模板

详见:http://m.blog.csdn.net/thchuan2001/article/details/65653855

代码:

 #include <iostream>
#include <math.h>
using namespace std; int gcd(int a, int b){
return b == ? a : gcd(b, a % b);
} int polya(int m, int n){
int ans = ;
for(int i = ; i < n; i++){
ans += pow(m, gcd(n, i));//第i次旋转的循环节数为gcd(n,i)
}
if(n & ){
for(int i = ; i < n; i++){
ans += pow(m, n / + );//共有n个循环节数均为n/2+1的置换
}
}else{
for(int i = ; i < n / ; i++){
ans += pow(m, n / ) + pow(m, n / + );//有两种置换,第一种循环节数均为n/2,第二种循环节数均为n/2+1
}
}
return ans;
} int main(void){
int n, m;
while(cin >> m >> n && m + n){
cout << polya(m, n) / (n << ) << endl;
}
return ;
}

poj2409(polya 定理模板)的更多相关文章

  1. [POJ1286&POJ2154&POJ2409]Polya定理

    Polya定理 L=1/|G|*(m^c(p1)+m^c(p2)+...+m^c(pk)) G为置换群大小 m为颜色数量 c(pi)表示第i个置换的循环节数 如置换(123)(45)(6)其循环节数为 ...

  2. poj 2409(polya定理模板)

    题意:给你n种颜色和m个小球,问你有多少种不同的方案! 分析:作为模板.. 代码实现: #include <iostream> #include <cstdio> #inclu ...

  3. poj1286 Necklace of Beads—— Polya定理

    题目:http://poj.org/problem?id=1286 真·Polya定理模板题: 写完以后感觉理解更深刻了呢. 代码如下: #include<iostream> #inclu ...

  4. Necklace of Beads(polya定理)

    http://poj.org/problem?id=1286 题意:求用3种颜色给n个珠子涂色的方案数.polya定理模板题. #include <stdio.h> #include &l ...

  5. poj 1286 polya定理

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

  6. P4980 【模板】Polya定理

    思路 polya定理的模板题,但是还要加一些优化 题目的答案就是 \[ \frac{\sum_{i=1}^n n^{gcd(i,n)}}{n} \] 考虑上方的式子怎么求 因为\(gcd(i,n)\) ...

  7. 【poj2409】Let it Bead Polya定理

    题目描述 用 $c$ 种颜色去染 $r$ 个点的环,如果两个环在旋转或翻转后是相同的,则称这两个环是同构的.求不同构的环的个数. $r·c\le 32$ . 题解 Polya定理 Burnside引理 ...

  8. [洛谷P4980]【模板】Polya定理

    题目大意:给一个$n$个点的环染色,有$n$中颜色,问有多少种涂色方案是的旋转后本质不同 题解:$burnside$引理:$ans=\dfrac1{|G|}\sum\limits_{g\in G}A_ ...

  9. poj2409:Let it Bead(置换群 polya定理)

    题目大意:长度为n的项链,要染m种颜色,可以通过旋转或翻转到达的状态视为同一种,问有多少种染色方案. 学了一波polya定理,发现很好理解啊,其实就是burnside定理的扩展. burnside定理 ...

随机推荐

  1. mybatis sql中的条件语句

    1.mybatis判断是否为空或null <if test="type!=null and type!=''"> AND type = #{type} </if& ...

  2. [python] itertools库学习

    最近做 cyber-dojo上的题,好几道都要用到排列组合.一开始我还老老实实自己写算法.后来一想,不对呀!python有那么多的库,为啥不用呢? 于是搜了下,发现这个:itertools 使用 he ...

  3. Excel开发学习笔记:发布VSTO下的Excel开发项目

    遇到一个数据处理自动化的问题,于是打算开发一个基于excel的小工具.在业余时间一边自学一边实践,抽空把一些知识写下来以备今后参考,因为走的是盲人摸象的野路子,幼稚与错误请多包涵. 开发环境基于VST ...

  4. 管理react路由的history对象的插件history的使用介绍

    本文介绍如何使用history插件管理浏览记录 history插件的使用 history这个插件可以方便管理你的浏览记录 cnpm install history --save import crea ...

  5. MFC简单的橡皮筋程序

    void CMainWindow::OnLButtonDown(UINT nFlags,CPoint point) { //以下三个是在CMainWindow中定义 m_ptFrom=point; m ...

  6. 简单的触发黑名单阻断演示 control+c

    #include "stdafx.h"#include <signal.h>#include <windows.h> #include <iostre ...

  7. Win7无法访问Windows共享文件夹

    解决方法如下 On the Windows 7 machine: Run secpol.msc Drill down through Local Policies | Security Options ...

  8. form(去掉关闭按钮,禁止调整大小)

    禁止Form窗口调整大小方法:FormBorderStyle 设为FixedSingle: 不能使用最大化窗口: MaximuzeBox 设为False: 不能使用最小化窗口:   MinimizeB ...

  9. Excel向数据库插入数据和数据库向Excel导出数据

    为了熟悉java里工作簿的相关知识点,所以找了“Excel向数据库插入数据和数据库向Excel导出数据”的功能来实现. 注意事项:1,mysql数据库: 2,需要导入的jar包有 jxl.jar,my ...

  10. 使用百度地图SDK 这是之前版本 现在的sdk v2-1-2使用方法完全改变

    1.添加BMapApiDemoApp.java 2.AndroidManifest文件  application里添加  android:name=".ui.BMapApiDemoApp&q ...