在田野中有一隻田鼠和一隻狗。狗想要吃掉田鼠,而田鼠則要儘速的逃進鼠洞中(田表面有許多鼠洞)。狗和田鼠都不是數學專家,但是也都不笨。當田鼠決定了某一個鼠洞後,就以一定的速度直線的跑去。而狗則非常擅長解讀肢體語言,當他一知道田鼠要往那個洞跑,就以田鼠2 倍的速度直線奔去,想要抓住田鼠。假如狗先到達那個洞,田鼠就會被吃掉,否則,田鼠就可安全逃走。
你必須幫田鼠選一個洞,使他可以逃離狗的魔掌(如果這樣的洞存在的話)。
輸入規範
輸入檔案中包含好幾組測試資料,每組測試資料的第一列有一個整數n 和4 個浮點數x1,y1,x2,y2。n(n £ 1000)代表本組測試資料有多少個鼠洞,4 個浮點數(均介於-10000 及+10000之間)代表田鼠(x1,y1)及狗(x2,y2)的x-y 座標。接下來的n 列,每列有2 個浮點數,代表每個鼠洞的座標。(所有的浮點數都到小數點後3 位測試資料組間有一空白列(請參考輸入範例)
輸出規範
每組測試資料輸出一列。如果田鼠可以逃走,請輸出"田鼠可由(x,y)的鼠洞逃走"。(x,y)是某一個洞的座標。如果田鼠無法逃走,請輸出"田鼠無法逃走"請注意:如果田鼠可以從不只一個洞逃走,請輸出在輸入中最前的洞。
輸入範例(test7.txt)
1 1.000 1.000 2.000 2.000
1.500 1.500
3 2.000 2.000 1.000 1.000
1.500 1.500
2.500 2.500
3.500 3.500
輸出範例(result7.txt)
田鼠無法逃走
田鼠可由(2.500,2.500)的鼠洞逃走
Dim myhole, holex, holey, ratx, raty, dogx, dogy As Double
回覆刪除Dim runaway As Boolean
Private Sub Form_Load()
Me.Hide
Open App.Path & "\in.txt" For Input As #1
Open App.Path & "\out.txt" For Output As 2
Do
Input #1, myhole, ratx, raty, dogx, dogy
For i = 1 To myhole
Input #1, holex, holey
If ((Abs(ratx - holex) ^ 2) + (Abs(raty - holey) ^ 2)) < ((Abs(dogx - holex) ^ 2) + (Abs(dogy - holey) ^ 2)) / 2 Then runaway = True: okx = holex: oky = holey
Next
If runaway = False Then Print #2, "田鼠無法逃走"
If runaway = True Then Print #2, "田鼠可由(" & Format(okx, "0.000") & "," & Format(oky, "0.000") & ")的鼠洞逃走"
runaway = False
Loop Until EOF(1)
Close #2
Close #1
End
End Sub
Dim a1, a2, b1, b2 As Double
回覆刪除Dim t As Boolean
Private Sub Form_Load()
Me.Hide
Open App.Path & "\in.txt" For Input As #1
Open App.Path & "\out.txt" For Output As #2
Do While Not EOF(1)
Input #1, n, a1, a2, b1, b2
t = False
For i = 1 To Val(n)
Input #1, x, y
m = (Abs(Val(a1) - Val(x)) ^ 2 + Abs(Val(a2) - Val(y)) ^ 2) ^ 0.5
d = m * 2: h = (Abs(Val(b1) - Val(x)) ^ 2 + Abs(Val(b2) - Val(y)) ^ 2) ^ 0.5
If h > d Then Print #2, "田鼠可由(" & Format(x, "0.000") & "," & Format(y, "0.000") & ")的鼠洞逃走": t = True
If i = n And t = False Then Print #2, "田鼠無法逃走"
Next i
Loop
Close #2
Close #1
End
End Sub