poj 2409 Let it Bead (组合数学 polya计数法)
2012-06-20 19:39
543 查看
大致题意:给你c种颜色的珠子,和一个长度为s(c,s<32)的项链,用这c种珠子串成这个项链,项链可以旋转和翻转,经过旋转和翻转所得的项链视为同一种项链,现在告诉你颜色总数c和项链的长度s,求共能组成几条不同的项链。
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 20000/10000K (Java/Other)
样例:
Sample Input
Sample Output
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 20000/10000K (Java/Other)
样例:
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计数法的题,跟Problem 1286 Necklace of Beads基本是一个题,详细解释写在那个题了,用最简单的方法就能过,这里不再赘述了。
#include<cstdio> #include<cmath> using namespace std; typedef __int64 ll; int gcd(int a,int b){ if(b==0){ return a; } return gcd(b,a%b); } int c,s; ll polya(){ int i,j; ll ans=0; for(i=0;i<s;i++){ ans+=(ll)pow(1.0*c,gcd(s,i)); } if(s%2){ ans+=s*(ll)pow(1.0*c,s/2+1); } else{ ans+=s/2*(ll)pow(1.0*c,s/2); ans+=s/2*(ll)pow(1.0*c,s/2+1); } return ans/2/s; } int main(){ while(scanf("%d%d",&c,&s)&&(c||s)){ ll ans=polya(); printf("%I64d\n",ans); } return 0; }
相关文章推荐
- POJ 2409 Let it Bead 组合数学
- POJ 2409 Let it Bead【polya 计数法,burnside定理】
- POJ 2409 Let it Bead polya 定理 和 置换
- NYOJ 280 LK的项链 &&POJ 2409 Let it Bead(polya 定理)
- POJ 2409 Let it Bead (Polya)
- POJ 2409 Let it Bead(Polya简单应用)
- Let it Bead POJ - 2409 Polya定理
- POJ 2409 Let it Bead (Polya计数)
- POJ 2409 Let it Bead (polya计数)
- POJ 2409 Let it Bead [置换群 Polya]
- poj2409 Let it Bead(polya)
- [ACM] POJ 2409 Let it Bead (Polya计数)
- POJ 2409 - Let it Bead【Polya定理】
- poj 2409 Let it Bead (polya)
- POJ 2409-Let it Bead(Polya定理-旋转+翻转 串项链)
- 组合数学 polay定理 hud 2409 Let it Bead
- POJ - 2409 - Let it Bead - (Polya定理)
- POJ 2409 Let it Bead ACM Polya
- POJ_2409 Let it Bead(Polya定理)
- [Polya] POJ 2409 Let it Bead