子題1:給定若干個數字,將它們依序排成一個頭、尾相接的環形。如果我們從某一數字開
始點名,每次點名後再往後跳2 個數字繼續點名(中間間隔1 個未被點名的數字)。已經被點
到名的數字不可再點,直到剩下最後一個「未點名」的數字時才停止。請問最後的數字為何?
輸入說明:
第1 行依序給定最多20 個要點名的數字,各數字之間以逗號隔開。
第2 行有1 個數字,是「開始點名」的數字。
輸出說明:
第1 行輸出最後一個未點名的數字。
輸入範例:【檔名:in-5-1.txt】
5, 3, 7, 11, 4, 2, 1, 8, 9
8
輸出範例:【檔名:out-5-1.txt】
9
Private Sub Form_Load()
回覆刪除Me.Hide
Open App.Path & "\in.txt" For Input As #1
Open App.Path & "\out.txt" For Output As #2
Line Input #1, A
Input #1, B
X = Split(A, ",")
Y = 0
For i = 0 To UBound(X)
List1.AddItem X(i)
If Val(X(i)) = B Then Y = i
Next i
Do
List1.RemoveItem (Y)
Y = (Y + 1) Mod List1.ListCount
Loop Until List1.ListCount = 1
Print #2, List1.List(0)
Close #2
Close #1
End
End Sub
輸入範例:
5, 3, 7, 11, 4, 2, 1, 8, 9
1
輸出範例:
8
佑好,
回覆刪除程式正確。
(你這題的解法中,要注意listcount和list(y)中的數字差。)
(這題使用mod來解決從尾端接回來的方式,很好)