#include <iostream>
using namespace std;
int fun(int m,int n)
{
int a,b,p,q,i;
if(m<=n)//令a=min(m,n),b=max(m,n)
{
a=m;
b=n;
}
else
{
a=n;
b=m;
}
for(i=0;(a+i)%3!=0;i++);//一个声呐可以探索3*3的面积,找到不小于a的最小3的倍数a+i
p=(a+i)/3;//覆盖边长为(a+i)的正方形区域需要p*p个声呐
q=b-p*3;
if(q>0)//若较长边长度超出a+i,递归计算
return p*p+fun(a,q);
else
return p*p;
}
int main()
{
int t,m,n;
cin>>t;
while(t--)
{
cin>>m>>n;
cout<<fun(m-2,n-2)<<endl;//实际需要计算的是(m-2)*(n-2)大小的区域
}
return 0;
}
UVA - 11044 Searching for Nessy
最新推荐文章于 2019-07-31 10:04:25 发布