#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int cas;
cin>>cas;
int n,m;
int k=0;
for(int i=0;i<cas;i++)
{
cin>>n>>m;
cout<<"Scenario #"<<i+1<<":"<<endl;
if(n%2==0||m%2==0)
printf("%d.00\n",m*n);
else printf("%d.41\n",m*n);
cout<<endl;
}
}
题目地址: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=37
找规律,关键是固定m,n 时 看 m+1,n 和m,n+1 分别是什么情况 ,然后想到如果m,n 有一个是偶数,可以找到一看就是最小的方法,如果都是奇数,可以思考怎么由m-1,n变换过来,发现在原来的答案上加了sqrt(2)-1;
代码: