2012年8月11日 星期六

田鼠與狗

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

1 則留言:

  1. Private Sub Form_Load()
    Me.Hide
    Dim c As Boolean
    Dim x1, x2, y1, y2, x, y As Double
    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
    c = False
    Input #1, x1, y1, x2, y2
    For i = 1 To n
    Input #1, x, y
    a = Abs(x1 - x)
    a1 = Abs(x2 - x)
    b = Abs(y1 - y)
    b1 = Abs(y2 - y)
    ansm = (a ^ 2 + b ^ 2) ^ 0.5
    ansd = (a1 ^ 2 + b1 ^ 2) ^ 0.5
    If (ansd / 2) > ansm Then Print #2, "田鼠可由(" & Format(x, "###0.000") & "," & Format(y, "###0.000"); ")的鼠洞逃走": c = True
    Next
    If c = False Then
    Print #2, "田鼠無法逃走"
    Else
    End If
    Loop
    Close
    Close
    End
    End Sub

    回覆刪除