解題方法
將(n,0)到(0,n)的點相連起來會發現,連起來的每個點的x和y的值加起來都一樣。而加起來是n的線,先假設叫做n線。例如連接(2,0)到(0,2)的點有(2,0)、(1,1)、(0,2),他們的值相加都是2,所以叫它2線。
而在x高度相同的情況下(依照題目給的圖),從n線到(n+1)線要走n+1步,也就是從2線到3線要走3步,從100線到101線要走101步。最後在調整高度就可以知道要走幾步了。
所以利用等差級數公式先算出從起始線到結束線的步數,再扣掉高度的差異後,就是答案了。
C++
#include <iostream>
using namespace std;
int main()
{
int n,x1,y1,x2,y2,i;
cin>>n;//輸入測資數量
for(i=1;i<=n;i++)
{
cin>>x1>>y1>>x2>>y2;//輸入測資
int count=0;
count+=(y1+x1+1+y2+x2)*(y2+x2-y1-x1)/2;//計算從起始的線到最後的線的步數
count+=(x2-x1);//調整誤差
cout<<"Case "<<i<<": "<<count<<endl;//輸出
}
return 0;
}
請先 登入 以發表留言。