象棋——ACM

题目描述

在中国象棋中正所谓新手玩车,熟手玩炮,老手玩马,由此可见象棋中炮的地位还是比较高的。

给定一个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
来源:牛客网
 

上一篇:汇编语言指令大全(详细)


下一篇:河南工程学院第五届ACM大学生程序设计竞赛(部分题解)