[编程题]翻转翻转

时间限制:1秒

空间限制:262144K

给定一个N*M的矩阵,在矩阵中每一块有一张牌,我们假定刚开始的时候所有牌的牌面向上。
现在对于每个块进行如下操作:
> 翻转某个块中的牌,并且与之相邻的其余八张牌也会被翻转。
XXX
XXX

XXX

如上矩阵所示,翻转中间那块时,这九块中的牌都会被翻转一次。
请输出在对矩阵中每一块进行如上操作以后,牌面向下的块的个数。

输入描述:

输入的第一行为测试用例数t(1 <= t <= 100000),
接下来t行,每行包含两个整数N,M(1 <= N, M <= 1,000,000,000)

输出描述:

对于每个用例输出包含一行,输出牌面向下的块的个数

输入例子1:

5
1 1
1 2
3 1
4 1
2 2

输出例子1:

1
0
1
2
0
#include 
using namespace std;
int main() {
    int t;
    cin >> t;
    long n, m,result;
    while (t--) {
        cin >> n >> m;
        if (n == 1 && m == 1)
            result=1;
        else if (n == 1 && m != 1 || n != 1 && m == 1)
            result= n > m ? n - 2 : m - 2;
        else
            result=(n-2)*(m-2);
        cout<

 

你可能感兴趣的:(网易笔试题)