趕快加入我們來參與討論吧!
您需要 登錄 才可以下載或查看,沒有帳號?加入我們
x
稍微想一下就會發現:n*m為奇數時,會有一步走斜向,答案為n*m-1+sqrt(2)
n*m為偶數時,答案為n*m
還滿容易理解的
不過有兩個陷阱:
1. n或m為1時答案為2*(n*m-1)
2. 別用double或long double存,會炸開,遇到sqrt(2)時自己輸出.41就行了
[C++] 純文本查看 復制代碼 #include<iostream>
#define endl '\n'
using namespace std;
typedef long long ll;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
long long n,m;
cin>>n>>m;
long long pc=n*m;
if(n==1 || m==1)
cout<<2*(pc-1)<<".00"<<endl;
else if(pc%2==0)
cout<<pc<<".00"<<endl;
else
cout<<pc<<".41"<<endl;
}
|