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;
}

 

arrow
arrow
    文章標籤
    UVa一星題 Can You Solve It?
    全站熱搜
    創作者介紹
    創作者 豪CO 的頭像
    豪CO

    程式道路,必為豐富

    豪CO 發表在 痞客邦 留言(0) 人氣()