题目描述
在中国象棋中正所谓新手玩车,熟手玩炮,老手玩马,由此可见象棋中炮的地位还是比较高的。
给定一个n×mn \times mn×m的棋盘,全部摆满炮,我们视所有炮都不属于同一阵营,他们之间可以相互攻击但不能不进行攻击直接移动。请问经历若干次攻击,直到不能攻击后,最少能剩余多少个炮。
输入描述:
第一行一个正整数TTT,表示数据组数,T≤104T \leq 10^{4}T≤104。
对于每组数据,输入两个正整数nnn和mmm,满足:n≤1018n \leq 10^{18}n≤1018,m≤1018m \leq 10^{18}m≤1018。
输出描述:
对于每组数据,输出最少能剩余多少个炮。
示例1
输入
2 1 2 2 3
输出
2 4
思路:
这个题是一道找规律的题,玩过象棋的都知道,炮的走法,题目上也给了说明,然后比较重要的是如果只有一个空,那么不能变,要是行或者是列为一的话,最后也只能剩下两个炮,其他的就是剩下四个炮。自己多动手画一画就知道了。
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
int num;
scanf("%d",&num);
long long int a,b;
while(num--)
{
scanf("%lld%lld",&a,&b);
if(a==1&&b==1) printf("1\n");
else if(a==1||b==1){
printf("2\n");
}
else printf("4\n");
}
return 0;
}
链接:https://ac.nowcoder.com/acm/contest/11213/F
来源:牛客网