2013 Multi-University Training Contest 4 Who's Aunt Zhang

看题就知道要用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=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\n",++k,sum);
    }
    return 0;
}
View Code

 

 

 

posted @ 2013-08-02 10:09  _随心所欲_  阅读(170)  评论(0编辑  收藏  举报