Description

"Let it Bead" company is located upstairs at 700 Cannery Row in Monterey, CA. As you can deduce from the company name, their business is beads. Their PR department found out that customers are interested in buying colored bracelets. However, over 90 percent of the target audience insists that the bracelets be unique. (Just imagine what happened if two women showed up at the same party wearing identical bracelets!) It's a good thing that bracelets can have different lengths and need not be made of beads of one color. Help the boss estimating maximum profit by calculating how many different bracelets can be produced.A bracelet is a ring-like sequence of s beads each of which can have one of cdistinct 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

Every line of the input defines a test case and contains two integers:

the number of available colors c followed by the length of the bracelets s.

Input is terminated by c = s = 0.

Otherwise, both are positive, and, due to technical difficulties in the bracelet-fabrication-machine, cs <= 32,

i.e. their product does not exceed 32.

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


polya置换的裸题了,考虑旋转,我们枚举所有可能的旋转方式,所以得到的循环节个数为gcd(i,n),因此答案为\(\sum\limits_{i=1}^{n} c^{gcd(n,i)}\)

再考虑一下翻转,我们分奇数和偶数进行讨论,如果是奇数,那么不论如何找对称轴,都必定会形成\(\frac{n}{2}+1\)个循环节,再乘上\(n\)即可;如果是偶数,那么就会有\(\frac{n}{2}\)和\(\frac{n-2}{2}+2\)两种循环节情况,然后每种情况各占\(\frac{n}{2}\)条对称轴

最后把答案除一下置换总数\(2*n\)即可

/*program from Wolfycz*/
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define inf 0x7f7f7f7f
using namespace std;
typedef long long ll;
typedef unsigned int ui;
typedef unsigned long long ull;
inline int read(){
int x=0,f=1;char ch=getchar();
for (;ch<'0'||ch>'9';ch=getchar()) if (ch=='-') f=-1;
for (;ch>='0'&&ch<='9';ch=getchar()) x=(x<<1)+(x<<3)+ch-'0';
return x*f;
}
inline void print(int x){
if (x>=10) print(x/10);
putchar(x%10+'0');
}
int gcd(int a,int b){return !b?a:gcd(b,a%b);}
int mlt(int a,int b){
int res=1;
for (;b;b>>=1,a=a*a) if (b&1) res=res*a;
return res;
}
int main(){
while (true){
int m=read(),n=read(),ans=0;
if (!n&&!m) break;
for (int i=1;i<=n;i++) ans+=mlt(m,gcd(n,i));
if (n&1) ans+=n*mlt(m,n/2+1);
else ans+=(mlt(m,n/2+1)+mlt(m,n/2))*(n>>1);
printf("%d\n",ans/(2*n));
}
return 0;
}

[ZOJ1961]Let it Bead的更多相关文章

  1. 百练_2409 Let it Bead(Polya定理)

    描述 "Let it Bead" company is located upstairs at 700 Cannery Row in Monterey, CA. As you ca ...

  2. poj 2049 Let it Bead(polya模板)

      Description Cannery Row percent of the target audience insists that the bracelets be unique. (Just ...

  3. poj2409 Let it Bead

                                                                      Let it Bead Time Limit: 1000MS   M ...

  4. POJ1975 Median Weight Bead floyd传递闭包

    Description There are N beads which of the same shape and size, but with different weights. N is an ...

  5. POJ 2409 Let it Bead(polya裸题)

    题目传送:http://poj.org/problem?id=2409 Description "Let it Bead" company is located upstairs ...

  6. 【POJ2409】Let it Bead Pólya定理

    [POJ2409]Let it Bead 题意:用$m$种颜色去染$n$个点的环,如果两个环在旋转或翻转后是相同的,则称这两个环是同构的.求不同构的环的个数. $n,m$很小就是了. 题解:在旋转$i ...

  7. POJ-1975 Median Weight Bead(Floyed)

    Median Weight Bead Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 3162 Accepted: 1630 De ...

  8. 珍珠 Median Weight Bead 977

    描述 There are N beads which of the same shape and size, but with different weights. N is an odd numbe ...

  9. Median Weight Bead(最短路—floyed传递闭包)

    Description There are N beads which of the same shape and size, but with different weights. N is an ...

随机推荐

  1. 【网络】TCP的流量控制

    一.利用滑动窗口实现流量控制 流量控制是让发送方的发生速率不要太快,要让接收方来得及接收. 发送方的发送窗口不能超过接收方给出的接收窗口的数值,TCP的窗口单位是字节,不是报文段. TCP为每一个连接 ...

  2. curl 中文乱码

    curl 中文乱码 学习了:https://blog.csdn.net/thc1987/article/details/52583789 学习了: http://blog.itpub.net/2903 ...

  3. OCR简介及使用

    OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗.亮的模式确定其形状,然后用字符识别方法将形状翻译 ...

  4. Office WORD如何去掉目录的背景灰色

    有人说鼠标点击空白的地方灰色就自动散掉了,但是我点击并没有散掉 鼠标选中有灰色背景的文字,点击格式-边框和底纹,点击无填充颜色,并应用于文字. O了

  5. 我的家乡:三河古镇已经登上央视CCTV-1新闻联播啦!

    在烟雨朦胧时走在古镇的青石街上,别有一番风味!第一幅图为央视的直播车,第二副图为漂亮的三河夜景色!

  6. 关于mybatis的 insert into select 命令未结束问题

    关于mybatis的 insert into select 命令未结束问题,最后以为是sql写错了,可是,在plsql运行又没问题.最后还是解决这个问题. 是设置问题. ### Cause: java ...

  7. CronTab命令实例

    每2分钟 将date写入到time.log(以下的为奇数分钟运行) */2 * * * * date >> ~/time.log 1-59/2 * * * * date >> ...

  8. NHibernate不支持复杂的linq,就一定要用DataTable这么低级吗

    有些linq,好不容易写出来,正想扬眉吐屁一番,不料用NHibernate一执行,却报错,说是不支持,我靠. 只好捏着鼻子写一大段sql,交给它.这种直接执行SQL的情况,我看我同事写的,全部都是返回 ...

  9. Android Studio集成Genymotion 及Genymotion 配置ADB

    1.打开 Android Studio,依次[File]-[Settings],快捷键  Ctrl + Alt + S 2.在打开的 settings 界面里找到 plugins 设置项,点击右侧的“ ...

  10. jsp useBean

    <jsp:uesBean id="test" scope="page" class="test.useBeanTest"> 用于 ...