2013年5月17日 星期五

UVa 12302 -- Nine-Point Circle


簡單題。

九點圓問題看似複雜,但因為通過 the midpoint of each side of the triangle,

也就是說,算出三中點坐標,例如 AB 中點坐標就是 ((Ax + Bx)/2, (Ay + By)/2)

有三中點,就能直接算出九點圓的圓心坐標跟半徑。

http://uva.onlinejudge.org/external/123/12302.html



程式碼也是短短的:

https://github.com/Meng-Gen/UVa/blob/master/UVa/acm_12302.cc

圓的算法在 http://mathforum.org/library/drmath/view/55239.html

這可以減少浮點數計算誤差,簡單說就是聰明解,

(h-x1)^2 + (k-y1)^2 = r^2
(h-x2)^2 + (k-y2)^2 = r^2
(h-x3)^2 + (k-y3)^2 = r^2

雖然有二次項,但只要兩兩相減,不僅消掉 h^2, k^2,一併也把 r^2 消掉,

變成純 h, k 的二元一次連立方程式,這個解就簡單了。



跟 UVa 190 幾乎一樣,不過 UVa 190 比較機車,需要用心處理 output format

沒有留言:

張貼留言