切換
舊版
前往
大廳
主題

ZeroJudge - e459: 有幾個點 解題心得

Not In My Back Yard | 2019-10-19 22:26:11 | 巴幣 0 | 人氣 258

題目連結:


題目大意:
給定一正整數 t ,代表接下來有 t 列輸入。每列給定四整數 x1 、 y1 、 x2 、 y2 (絕對值皆 ≦ 10 ^ 18),代表一個線段兩端點的 x 、 y 座標。

對於每個線段,其連線上經過幾個 x 、 y 座標皆是整數的點(包含兩端點)?



範例輸入:
2
1 1 0 0
-1 0 0 -1


範例輸出:
2
2


解題思維:
假設 a = | x1 - x2 |, b = | y1 - y2 |,則我們可以看到從一端點走向另一端點時,期間會經過 GCD(a, b) + 1 個整數座標點(即格子點。而其中的 GCD 代表最大公因數)。

因為, GCD(a, b) 保證 x 每經過 a ÷ GCD(a, b)  且 y 每經過 b ÷ GCD(a, b)  的變化後,會碰到一個整數點。(正因為是最大公因數,所以可以整除 a 、 b)而含兩端點總共有 GCD(a, b) + 1 。

此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

相關創作

更多創作