选猴王”,意思是说一群猴子有N只,坐在一起选猴王,每只猴子都有一个编号1~N。从1号猴子开始报号,报到M号则退出;下只猴子继续从1开始报,依次循环,则最后的一只猴子为猴王。试求出这只猴子的编号。
模型如下:(猴子总数:50,数到第7只猴子退出!)
我给出其中的一种解题代码如下(适合求任意猴子数)
Public Sub xhz() Cells.Clear zs = Val(InputBox("请输入猴子的总数!")) cj = Val(InputBox("请输入第几只猴子出局!")) For i = 1 To zs Cells(i, 1) = i Cells(i, 2) = 1 Next h = 1 Do While Application.WorksheetFunction.Sum(Range("b1:b" & zs)) > 1 m = 0 Do While m <> cj m = Cells(h, 2) + m h = h + 1 If h > zs Then h = 1 Loop If h <> 1 Then Cells(h - 1, 2) = 0 Else Cells(zs, 2) = 0 End If Loop For jg = 1 To zs If Cells(jg, 2) = 1 Then MsgBox "第" & Cells(jg, 1) & "个猴子是猴王!" Exit For End If Next jg Cells.Clear End Sub |