题意:用k种颜色对立方体着色,旋转后相同视为相同的方案,求着色方案数。

六个面,每个面为底可以有4个旋转,总共24种置换。

初始时对下底面旋转有:x^8 + x^2 + x^4 + x^2

将垂直于水平面的四个面翻转90度到底面,并有四个旋转:4*(x^2 + x^4 + x^4 + x^4)。

将上底面旋转180度到下底面,并有四个旋转:x^4 + x^4 + x^4 + x^4。

 1 import java.util.*;
 2 import java.math.*;
 3 
 4 public class Main {
 5     public static void main(String[] args) {
 6         Scanner in = new Scanner(System.in);
 7         BigInteger x, ans, tmp;
 8         int i, j, T;
 9         tmp = new BigInteger("1000000000000000");
10         T = in.nextInt();
11         for (i = 1; i <= T; i++) {
12             x = in.nextBigInteger();
13             ans = BigInteger.ZERO;
14             ans = ans.add(x.pow(8));
15             ans = ans.add(x.pow(4).multiply(BigInteger.valueOf(17)));
16             ans = ans.add(x.pow(2).multiply(BigInteger.valueOf(6)));
17             ans = ans.divide(BigInteger.valueOf(24));
18             System.out.print("Case " + i + ": ");
19             if (ans.compareTo(tmp) > 0) {
20                 ans = ans.mod(tmp);
21                 for (j = ans.toString().length(); j < 15; j++)
22                     System.out.print(0);
23             }
24             System.out.println(ans);
25         }
26     }
27 }
posted on 2012-09-13 00:41  DrunBee  阅读(435)  评论(0编辑  收藏  举报