问题描述
用两种颜色去染排成一个圈的8个棋子,如果可以通过旋转得到则只算一种,问一共有多少种染色方式 ?
解题方法:典型的polya定理解题
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll gcd(ll a,ll b)
{
if(b==0)
return a;
return gcd(b,a%b);
}
int main()
{
ll n;
cin>>n;
int m=2;
ll sum=0;
for(int i=1;i<=n;i++)
{
sum+=pow(m,gcd(n,i));
}
cout<<sum/n<<endl;
return 0;
}