2010年10月29日 星期五

海藻(algae)

內容 :
根據最新的生態學研究報導,在台北市植物園的蓮花池中,發現了一種奇特的海藻,此種海藻的外形具有一種十 分特殊的性質:

種子落地後,經過一天的時間,會先長出一根長一公分的綠色分枝。
綠色的分枝,經過一天的時間後,會向上成長一公分,並且變成黃色。
黃色的分枝,經過一天的時間後,會向上成長一公分,並且分成左右兩個分枝,其中左分枝為綠色,右分枝為黃色。
所有的分枝都不會互相交錯,同時恰好成長在同一個平面上。

舉例來說,若我們由左而右俯視觀察此海藻每天的生長情形,則在種子落地後的第一天,觀察結果為『綠』,第 二天的觀察結果為『黃』,第三天的觀察結果為『綠黃』,第四天的觀察結果為『黃綠黃』, 第五天的觀察結果為『綠黃黃綠黃』,依此類推。

請寫一個程式,預測在第 N 天時,由左邊數來第 K 個分枝的顏色為何。
輸入說明 :
每個測資點中的第一行有一個正整數 M 代表此測資點中共有 M 組測試資料

每組測試資料含有兩個以空白相間隔的正整數,分別依次為 N 與 K

為方便起見,所有的測試資料皆滿足 0 < M < 100,0 < N < 100 且 0 < K < 2000000000

輸出說明 :
每行輸出第 N 天時

由左邊數來第 K 個分枝的顏色(請用數字 0 代表綠色,1 代表黃色)

若第 N 天時,此海藻的分枝數少於 K,則輸出 -1

範例輸入 :

3
3 1
5 5
6 100
範例輸出 :

0
1
-1

2 則留言:

  1. Dim St As String
    Private Sub Form_Load()
    Me.Hide
    Open App.Path & "\in.txt" For Input As #1
    Open App.Path & "\out.txt" For Output As #2
    Input #1, XXX
    For i = 1 To XXX
    Input #1, Da, Q
    K = 1
    St = "A"
    Do
    K = K + 1
    St = Replace(St, "A", "C")
    St = Replace(St, "B", "AB")
    St = Replace(St, "C", "B")
    Loop Until K = Da
    If Mid(St, Q, 1) = "A" Then
    Print #2, "0"
    ElseIf Mid(St, Q, 1) = "B" Then
    Print #2, "1"
    Else
    Print #2, "-1"
    End If
    Next i
    Close #2
    Close #1
    End
    End Sub


    BY小白

    回覆刪除
  2. Dim ans As String
    Public Sub Form_Load()
    Me.Hide
    Open App.Path & "\in.txt" For Input As #1
    Open App.Path & "\out.txt" For Output As #2
    Input #1, n
    For i = 1 To n
    Input #1, k, m
    ans = "0"
    For j = 2 To k
    nans = ""
    For g = 1 To Len(ans)
    If Mid(ans, g, 1) = "0" Then
    nans = nans & "1"
    Else
    nans = nans & "01"
    End If
    Next g
    ans = nans

    Next j
    If Mid(nans, m, 1) <> "" Then
    Print #2, Mid(nans, m, 1)
    Else
    Print #2, -1
    End If
    Next i
    Close #2
    Close #1
    End
    End Sub

    by Yung

    回覆刪除