2012年11月20日 星期二

田鼠與狗

在田野中有一隻田鼠和一隻狗。狗想要吃掉田鼠,而田鼠則要儘速的逃進鼠洞中(田表面有許多鼠洞)。狗和田鼠都不是數學專家,但是也都不笨。當田鼠決定了某一個鼠洞後,就以一定的速度直線的跑去。而狗則非常擅長解讀肢體語言,當他一知道田鼠要往那個洞跑,就以田鼠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)的鼠洞逃走

2 則留言:

  1. 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

    回覆刪除
  2. 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

    回覆刪除