国际象棋,马走日:
三种情况,
- 如果是 max(n,m)== 1,那就全都放置骑士。
- 如果是 max(n,m)== 2, 放置的方法就是田字格放置。空一个田字格放一个田字格,【不理解可以自己画图】。
- 最后一种情况就是要不然全放在深色的格子里,要不然全放在浅色的格子里。【不理解同上】
#include<bits/stdc++.h>
using namespace std;
//#define int long long
const int N = 1;
int a[N];
int z = 1;
void solve()
{
int n,m;cin>>n>>m;
cout<<"Case "<<z++<<": ";
if(n>m)
swap(n,m);
if(n == 1)
cout<<m<<endl;
else if(n == 2)
cout<<m/4*4+min(2,m%4)*2<<endl;//如果余数为3,那就说明还能加一组田字格,但是如果余数小于3,那就只能添加余数*2个士兵。
else
cout<<(n*m+1)/2<<endl;//考虑到奇偶性,
}
signed main()
{
int t = 1;
cin>>t;
while(t--)
{
solve();
}
return 0;
}