版权声明:本文为博主瞎写的,请随便转载 https://blog.csdn.net/sdut_jk17_zhangming/article/details/82025128
Pólya定理:
在一个置换群G={a1,a2,a3……ak}中,设C(ak)是在置换ak的循环节个数,那么用m种颜色染图这n个对象,则不同的染色方案数为:
int main()
{
//用c种颜色给有n*n的格子的墙染色 用m墙围成房子 问不同的房子多少种
ll n,m,c,i,ans = 0,x;
scanf("%lld%lld%lld",&n,&m,&c);
for(i=0;i<m;i++)
{
x = __gcd(i,m);
ans += pow_mod(c,n*n*x);
ans %= mod;
}
ans = ans * pow_mod(m,mod-2)%mod;
printf("%lld\n",ans);
return 0;
}