题目:100人,从1到100标上号码,围成圆圈,从1开始报数,报到10的那人退出,然后从那人的下一个开始循环报数,直到最后一人,求依次退出人员的序号
jackierobin的解法:
Sub test()
t = Timer
Dim i&, n&, S$
'创建1到100 的数组
Set D = CreateObject("Scripting.Dictionary")
For i = 1 To 100
D(i) = " " & i
Next
n = 1
JACKIE:
'循环 d的数组 取消第10个子项
For Each CC In D.keys
If n = 10 Then
S = S & D(CC)
D.Remove (CC)
n = 0
End If
n = n + 1
Next
' d数组格式 不为0 返回循环
If D.Count <> 1 Then GoTo JACKIE
' d数组格式的一条项目
M = D.ITEMS
MsgBox "总用时" & Format(Timer - t, "0.00000") & "秒"
MsgBox "依次提出数为" & S & "最后留下的是 " & M(0)
End Sub