看题就知道要用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
代码如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include<stdio.h> int pows(int a,int b) { int ans=1; while(b){ if(b&1) ans=(ans*a)%10007; b>>=1; a=(a*a)%10007; } return ans%10007; } int main(){ int n,t,k=0,sum; scanf("%d",&t); while(t--){ scanf("%d",&n); sum=(pows(n,74)+pows(n,20)*6+pows(n,38)*9+pows(n,26)*8)%10007; sum=(sum*pows(24,10007-2))%10007; printf("Case %d: %d ",++k,sum); } return 0; }