考拉
从前,在一片美丽的树林里,居住着一只可爱的小考拉。一天,小狐狸在OJ上刷题的时候遇到了这样一个问题:
给定一个N行M列的网格,请在每一格上填上+1或-1,使得每行和每列的数的乘积都等于-1。求方案数。
小狐狸不会做于是找到了小考拉。小考拉也不会做。你能帮助他么?
输入
有多组数据。输入数据第一行包含T为数据组数。
下面T行每行依次包含两个整数N和M。
输出
输出T行每行一个整数,为方案数。注意方案数可能很大。
样例输入
2
2 3
2 2
样例输出
0
2
数据范围
对于20%的数据有1 ≤ N, M ≤ 5
对于100%的数据有1 ≤ N, M ≤ 100, 1 ≤ T ≤ 10
一开始就往动归方面想。
但情况好多,于是写了个简单搜索程序,打了下面的表。
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 |
2 | 0 | 2 | 0 | 8 | 0 | 32 | 0 | 128 |
3 | 1 | 0 | 16 | 0 | 256 | 0 | 4096 | |
4 | 0 | 8 | 0 | 512 | 0 | 32768 | 0 | |
5 | 1 | 0 | 256 | 0 | 66536 | 0 | | |
6 | 0 | 32 | 0 | 32768 | 0 | | | |
7 | 1 | 0 | 4096 | 0 | | | | |
8 | 0 | 128 | | | | | | |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
2 | 1 | 1 | 1 | 3 | 1 | 5 | 1 | 7 |
3 | 0 | 1 | 4 | 1 | 8 | 1 | 12 | |
4 | 1 | 3 | 1 | 9 | 1 | 15 | 1 | |
5 | 0 | 1 | 8 | 1 | 16 | 1 | | |
6 | 1 | 5 | 1 | 15 | 1 | | | |
7 | 0 | 1 | 12 | 1 | | | | |
8 | 1 | 7 | | | | | | |
不难看出,对于x=y=n 则 表2[x,y] = (n-1)^2。且对于x+y=2n 的数,其值都和 表2[n,n] 有关系 。所以就有了递归关系式。
这题还要用到高精度。最后的结果是个非常大的数。我一开始高精度数组开100,爆了;开到1000,又爆了;直到开到5000才没爆。
做是做出来了,但是不知道原因。。这大概就是考试时做动归题目的策略。
考虑前N-1行M-1列随便填,那么第N行的前M-1列所有位置唯一确定,第M列的前N-1行所有位置也唯一确定。
如右图。
这时分四种情况:
若N为奇数,M为奇数,则区域2的格子的乘积等于负的区域1的乘积,区域3的乘积同样等于负的区域1的乘积,而区域四的乘积等于区域2的乘积等于区域3的乘积,于是此时答案唯一。
若N为奇数,M为偶数,则区域2的格子的乘积等于负的区域1的乘积,区域3的乘积却等于正的区域1的乘积,此时区域2的乘积不等于区域3的乘积,无解。
若N为偶数,M为偶数,同理可知解唯一。
若N为偶数,M为奇数,同理可知无解。
综上可知,若N与M奇偶性相同则答案为2(N-1)*(M-1),否则答案为0。
var
procedure cheng;
var
begin
end;
begin
end.5