您的位置:首页 > 其它

【POJ 1286】Necklace of Beads(Polya 定理)

2016-05-22 11:44 537 查看
Necklace of Beads

Time Limit: 1000MS Memory Limit: 10000K
Total Submissions: 7588 Accepted: 3159
Description

Beads of red, blue or green colors are connected together into a circular necklace of n beads ( n < 24 ). If the repetitions that are produced by rotation around the center of the circular necklace or reflection to the axis of symmetry are all neglected, how
many different forms of the necklace are there? 



Input

The input has several lines, and each line contains the input data n. 

-1 denotes the end of the input file. 

Output

The output should contain the output data: Number of different forms, in each line correspondent to the input data.
Sample Input
4
5
-1

Sample Output
21
39

Source

Xi'an 2002
[Submit]   [Go Back]   [Status]  
[Discuss]
[题意][一个手镯,用三种颜色图,可以旋转和翻转,求有多少方案。]
【题解】【Polya 定理】



本题可直接代入公式计算

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
long long p[110],ans,n;

long long gcd(int a,int b)
{
if(!(a%b)) return b;
return gcd(b,a%b);
}

int main()
{
int i,j;
while((scanf("%I64d",&n)==1))
{
if(!n) {printf("0\n"); continue;}
if(n==-1) return 0;
p[0]=1;
for(i=0;i<n;++i) p[i+1]=p[i]*3;
if(!(n%2)) ans=(n/2)*(p[n/2+1]+p[n/2]);
else ans=n*p[n/2+1];
for(i=1;i<=n;++i) ans+=p[gcd(i,n)];
ans/=2*n;
printf("%I64d\n",ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  置换群 poj Polya定理