您的位置:首页 > 其它

【polya】 HDOJ Count the Tetris

2015-09-03 18:33 176 查看
套用polya计算出奇偶,旋转,反射16种情况的方案数。。

import java.util.*;
import java.io.*;
import java.math.*;
import java.lang.*;

public class Main
{
public static void main(String args[])
{
Scanner cin = new Scanner(System.in);

int a, b;
while(cin.hasNext()) {
a = cin.nextInt();
b = cin.nextInt();
BigInteger ans = BigInteger.ZERO;
BigInteger tt = BigInteger.valueOf(b);
if(a % 2 == 0) {
BigInteger t = BigInteger.ONE;
for(int i = 1; i <= a * a; i++) t = t.multiply(tt);
ans = ans.add(t);

t = BigInteger.ONE;
for(int i = 1; i <= (a * a) / 4; i++) t = t.multiply(tt);
ans = ans.add(t);

t = BigInteger.ONE;
for(int i = 1; i <= (a * a) / 2; i++) t = t.multiply(tt);
ans = ans.add(t);

t = BigInteger.ONE;
for(int i = 1; i <= (a * a) / 4; i++) t = t.multiply(tt);
ans = ans.add(t);

t = BigInteger.ONE;
for(int i = 1; i <= (a * a) / 2; i++) t = t.multiply(tt);
ans = ans.add(t);

t = BigInteger.ONE;
for(int i = 1; i <= (a * a) / 2; i++) t = t.multiply(tt);
ans = ans.add(t);

t = BigInteger.ONE;
for(int i = 1; i <= (a * a + a) / 2; i++) t = t.multiply(tt);
ans = ans.add(t);

t = BigInteger.ONE;
for(int i = 1; i <= (a * a + a) / 2; i++) t = t.multiply(tt);
ans = ans.add(t);
}
else {
BigInteger t = BigInteger.ONE;
for(int i = 1; i <= a * a; i++) t = t.multiply(tt);
ans = ans.add(t);

t = BigInteger.ONE;
for(int i = 1; i <= (a * a + 3) / 4; i++) t = t.multiply(tt);
ans = ans.add(t);

t = BigInteger.ONE;
for(int i = 1; i <= (a * a + 1) / 2; i++) t = t.multiply(tt);
ans = ans.add(t);

t = BigInteger.ONE;
for(int i = 1; i <= (a * a + 3) / 4; i++) t = t.multiply(tt);
ans = ans.add(t);

t = BigInteger.ONE;
for(int i = 1; i <= (a * a + a) / 2; i++) t = t.multiply(tt);
ans = ans.add(t);

t = BigInteger.ONE;
for(int i = 1; i <= (a * a + a) / 2; i++) t = t.multiply(tt);
ans = ans.add(t);

t = BigInteger.ONE;
for(int i = 1; i <= (a * a + a) / 2; i++) t = t.multiply(tt);
ans = ans.add(t);

t = BigInteger.ONE;
for(int i = 1; i <= (a * a + a) / 2; i++) t = t.multiply(tt);
ans = ans.add(t);
}
ans = ans.divide(BigInteger.valueOf(8));
System.out.println(ans.toString());
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: