close
解題方法
將(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; }
文章標籤
全站熱搜