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

 

 

 

你可能感兴趣的:(test)