hdu 3547 DIY Cube (Ploya定理)

Case 1: 1Case 2: 23

Case 3: 031651434916928

/** 题意:用n中颜色涂一个正方体的八个顶点,求有多少种方法。如果得到的结果大于等于10^15,则输出后15位即可。思路:Ploya定理啊,是组合数学课本上的原题。对应于四种不同类型的旋转,1:不动,即恒等旋转有1个;2:绕三对对立面的中心旋转,有旋转90度,旋转180度,旋转270度,分别有3个;3:绕对边终点连线旋转,有6个;4:绕对角点旋转,有旋转120度和旋转240度,分别有4个。因此共有24个对称。最后可以转化成公式(k^8 + 17*k^4 + 6 * k^2)/ 24 。由于涉及到了大数,所以这道题我使用java写的,刚学java。看着大神的分析,,写了写试试,java单词好多,*/

import java.util.*;import java.math.*;import java.math.BigInteger;public class Main {public static void main(String[] args){int i,j;BigInteger sum,k,temp;temp= new BigInteger ("1000000000000000");Scanner in=new Scanner(System.in);int t=in.nextInt();for(i=1;i<=t;i++){sum= BigInteger.ZERO;k=in.nextBigInteger();sum=sum.add(k.pow(8));sum=sum.add(k.pow(4).multiply(BigInteger.valueOf(17)));sum=sum.add(k.pow(2).multiply(BigInteger.valueOf(6)));sum=sum.divide(BigInteger.valueOf(24));System.out.print("Case "+i+": ");if(sum.compareTo(temp) > 0){sum= sum.mod(temp);for(j=sum.toString().length(); j<15;j++){System.out.print(0);}}System.out.println(sum);}}}

一直觉得人应该去旅行,在年轻的时候,

hdu 3547 DIY Cube (Ploya定理)

相关文章:

你感兴趣的文章:

标签云: