首页 > 代码库 > hdu 1812 Count the Tetris polya计数
hdu 1812 Count the Tetris polya计数
哈哈哈,简单polya,公式自己推导。
不过这题需要用到大数,很久没写Java,调了好久。
import java.math.*; import java.util.*; import java.io.*; public class Main{ public static void main(String args[]){ Scanner cin=new Scanner(System.in); int n; BigInteger c; while(cin.hasNextInt()) { BigInteger ans=BigInteger.valueOf(0),tmp; n=cin.nextInt(); c=cin.nextBigInteger(); int k=n%2; //奇数的话,在中间有个不动点 ans=ans.add(c.pow(n*n)); //0度 ans=ans.add(c.pow((n*n-k)/4+k)); //90度 ans=ans.add(c.pow((n*n-k)/2+k)); //180 ans=ans.add(c.pow((n*n-k)/4+k)); //270 // System.out.println(ans); if(n%2==0){ tmp=c.pow(n*n/2); ans=ans.add(tmp.multiply(BigInteger.valueOf(2))); tmp=c.pow(n*(n-1)/2+n); ans=ans.add(tmp.multiply(BigInteger.valueOf(2))); } else{ tmp=c.pow(n*(n-1)/2+n); ans=ans.add(tmp.multiply(BigInteger.valueOf(4))); } ans=ans.divide(BigInteger.valueOf(8)); System.out.println(ans); } } }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。