看题就知道要用polya,但是当时没做出来,还是不是很熟悉polya!!!

总共有24种置换:

1. 不做任何旋转 K ^ (54 + 12 + 8)

2. 绕相对面中心的轴转

1) 90度 K ^ (15 + 3 + 2) * 3

1) 180度 K ^ (28 + 6 + 4) * 3

1) 270度 K ^ (15 + 3 + 2) * 3

3. 绕相对棱中心的轴转

1) 180度 K ^ (27 + 7 + 4) * 6

4. 绕相对顶点的轴转

1) 120度 K ^ (18 + 4 + 4) * 4

1) 240度 K ^ (18 + 4 + 4) * 4

代码如下:

#include<stdio.h>
int pows(int a,int b)
{
int ans=;
while(b){
if(b&) ans=(ans*a)%;
b>>=;
a=(a*a)%;
}
return ans%;
}
int main(){
int n,t,k=,sum;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
sum=(pows(n,)+pows(n,)*+pows(n,)*+pows(n,)*)%;
sum=(sum*pows(,-))%;
printf("Case %d: %d\n",++k,sum);
}
return ;
}
04-26 11:17