【题目分析】
题目大意:一个环有n个点,共染三种颜色。问 在旋转和对称的情况下有多少种本质不同的方案数。
Burnside直接做。
【代码】
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; #define ll long long #define F(i,j,k) for (int i=j;i<=k;++i) ll f[25],pow[30]; int n; int gcd(int a,int b) {return b==0?a:gcd(b,a%b);} int main() { f[0]=0;pow[0]=1; F(i,1,23) pow[i]=pow[i-1]*3; F(z,1,23) { F(i,0,z-1) f[z]+=pow[gcd(i,z)]; if (z&1) f[z]+=z*pow[z/2+1]; else f[z]+=z/2*pow[z/2],f[z]+=z/2*pow[z/2+1]; f[z]/=2*z; } while (scanf("%d",&n)&&n>=0) printf("%lld ",f[n]); }