# 題目: UVa 10642 - Can You Solve It

# 題目說明

給一個平面座標的移動規則
(0, 0) -> (0, 1) -> (1, 0) -> (0, 2) -> (1, 1) -> (2, 0) -> (0, 3) ... 以此類推
求初始座標 (x1, y1) 與目的座標 (x2, y2) 的距離


INPUT:
第一行輸入一個整數 t ,代表測資數
接下來有 t 行,每行有 4 個整數 x1y1x2y2 ,代表初始座標 (x1, y1) 與目的座標 (x2, y2)


OUTPUT:
輸出從初始座標 (x1, y1) 到目的座標 (x2, y2) 的距離

# 解題方法

使用一個變數 cnt 紀錄距離
先將初始座標 (x1, y1) 移至 y軸 上,也就是 x1 歸零, cnt 減去移動的距離
再將目的座標 (x2, y2) 移至 y軸 上,也就是 x2 歸零, cnt 加上移動的距離
最後再算 (0, y1)(0, y2) 的距離,公式為 y1 + 1 累加至 y2

假設現在要從 (1, 2) 移動到 (3, 4)

將初始座標 (1, 2) 往左移變成 (0, 3)cnt0 - 1 = -1
將目的座標 (3, 4) 往左移 3 次,變成 (0, 7)cnt-1 + 3 = 2
現在問題變成要將 (0, 3) 移動到 (0, 7) ,按照公式需要加 4, 5, 6, 7 ,所以 cnt2 + 4 + 5 + 6 + 7 = 24

# 參考程式碼

#include <iostream>
using namespace std;
static auto fast_io = []
{
	ios::sync_with_stdio(false);
	cout.tie(nullptr);
	cin.tie(nullptr);
	return 0;
}();
int main()
{
	int t, x1, y1, x2, y2;
	int Case = 0;
	cin >> t;
	while (t--)
	{
		int cnt = 0;
		cin >> x1 >> y1 >> x2 >> y2;
			
		while (x1) --x1, ++y1, --cnt;
		while (x2) --x2, ++y2, ++cnt;
		for (int i = y1 + 1; i <= y2; ++i) cnt += i;
		cout << "Case " << ++Case << ": " << cnt << "\n";
	}
}