hdu 3547 DIY Cube
2012-07-11 23:09
302 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3547
题目大意:
用C种颜色给一个正立方体的顶点染色,如果旋转之后相同的,算同一种染色方案,求共有多少种染色方案.
题目思路:
很容易看出可以用polya定理解题.
既然知道可以用polya来解,那么就是算状态数和每种状态的循环数.
我们选一顶点位置做为标准位置,那么通过旋转,易知该标准位置可以有8种不同状态(因为总共只有8个顶点),又每个顶点邻接3个面(假设所有面的颜色不同,那么很容易看出选择只能得到3种不同状态),所以总状态数:8*3=24.
接下来计算循环数,易知不旋转时循环数是8,通过一个方向选择1~3次,循环数分别是2,4,2,再画几个图,我们会发现其余的状态的循环数都是4,所以方案数:(C^8+6*C^2+17*C^4)/24.
由于题目要求答案>10^15时只要输出后15位,所以我们可以用java的大数类偷懒一下.
代码:
题目大意:
用C种颜色给一个正立方体的顶点染色,如果旋转之后相同的,算同一种染色方案,求共有多少种染色方案.
题目思路:
很容易看出可以用polya定理解题.
既然知道可以用polya来解,那么就是算状态数和每种状态的循环数.
我们选一顶点位置做为标准位置,那么通过旋转,易知该标准位置可以有8种不同状态(因为总共只有8个顶点),又每个顶点邻接3个面(假设所有面的颜色不同,那么很容易看出选择只能得到3种不同状态),所以总状态数:8*3=24.
接下来计算循环数,易知不旋转时循环数是8,通过一个方向选择1~3次,循环数分别是2,4,2,再画几个图,我们会发现其余的状态的循环数都是4,所以方案数:(C^8+6*C^2+17*C^4)/24.
由于题目要求答案>10^15时只要输出后15位,所以我们可以用java的大数类偷懒一下.
代码:
import java.io.*; import java.math.*; import java.util.*; import java.text.*; public class Main { public static BigInteger polya (BigInteger N, BigInteger C) { int n = N.intValue(); BigInteger ret = C.pow(8); ret = ret.add(C.pow(2).multiply(BigInteger.valueOf(6))); ret = ret.add(C.pow(4).multiply(BigInteger.valueOf(17))); return ret.divide(BigInteger.valueOf(24)); } public static void main(String[] args) { Scanner cin = new Scanner(new BufferedInputStream(System.in)); int T, cas, len; T = cin.nextInt(); BigInteger C, ret; String str; for(cas=1;cas<=T;cas++){ C = cin.nextBigInteger(); ret = polya(BigInteger.valueOf(8),C); str = ret.toString(); len = str.length(); System.out.printf("Case %d: ", cas); if(len<=15) System.out.println(str); else{ char [] ch = str.toCharArray(); for(int i=len-15;i<len;i++) System.out.printf("%c", ch[i]); System.out.println(); } } } }
相关文章推荐
- HDU 3547 DIY Cube
- 【HDU】3547 DIY Cube
- hdu 3547 DIY Cube (Ploya定理)
- hdu 3547 DIY Cube (Ploya定理)
- hdu 3547 DIY Cube【polya】
- hdu 3547(Polya计数)
- HDOJ 3547 DIY Cube
- HDOJ 3547 DIY Cube 解题报告
- ZOJ 3547 & HDU 4059
- hdu 3547 (polya定理 + 小高精)
- hdu_3547
- HDU-2049 不容易系列之(4)——考新郎 错排 不要用 long long
- HDU3622 二分+2-SAT
- hdu 1302 The Snail (模拟)
- HDU 4009 Transfer water(最小树形图)
- HDU 2037 今年暑假不AC (贪心算法)
- Hdu 4571Travel in time2013长沙邀请赛
- HDU 4632——Palindrome subsequence
- HDU4686——Arc of Dream矩阵快速幂
- hdu 4282A very hard mathematic problem(枚举+二分)