问题:有一个和尚,他有两串佛珠,每串七七四十九颗,都按1-49的顺序编号,他念经有个怪癖,他每天念经前要把其中一串佛珠拆开散放进一个纸箱。摇一摇后从中摸出一颗珠子,看看上面的号码,比如说是23号,然后拿起另一串佛珠从第1号开始数,数到第23颗珠子(即23号珠子)便把它拿出来,接着又24号珠子开始数,数到第23颗(即46号珠子)时也把它拿出来,接着又从47号珠子开始数,数到第23颗(即20号珠子,因为珠子串成一串,49号与1号是连着的)时也把它拿出来,接着又从21号珠子开始数,数到第23颗(即44号珠子,注意,23号珠子原先已经被拿出,所以到44号)也把它拿出来……如此循环,每数到第23颗都要拿出来,即使最后珠子不足23颗,也要在剩下的珠子继续循环,直到剩下最后一颗。现在和尚想知道,当他每天从摇一摇后的纸箱里摸出一颗珠子(如上面的23号珠子),重复上面的做法后,最后剩下的那个珠子的号码是多少?
解答:
<
%@ Page Language
=
"
VB
"
%
>
< script runat = " server " >
Sub Page_Load() Sub Page_Load(ByVal Sender As Object, ByVal E As EventArgs)
Dim i, Min As Integer
Dim X As Integer = 2
Dim Max As Integer = 5
Dim arr(Max, 2) As Integer
For i = 0 To Max - 1
arr(i, 0) = i + 1 '手中佛珠编号
arr(i, 1) = 1 '用来标记是否取出
Next
Min = Max
i = 0
Do
If i = Max Then i = 0 '数过49则重新数
If arr(i, 1) = 1 Then
If arr(i, 0) = X Then '数至X便取出该珠
arr(i, 1) = 0 '并将及标为0
Min = Min - 1 '珠的总数减1
End If
End If
i = i + 1
Loop Until Min = 1
For i = 0 To Max - 1
If arr(i, 1) = 1 Then message.Text = "最后剩下的为" & arr(i, 0) & "个珠" : Exit For
Next
End Sub
</ script >
< html xmlns = " http://www.w3.org/1999/xhtml " >
< body >
< form id = " form1 " runat = " server " >
< asp:label id = " message " runat = " server " />
</ form >
</ body >
</ html >
< script runat = " server " >
Sub Page_Load() Sub Page_Load(ByVal Sender As Object, ByVal E As EventArgs)
Dim i, Min As Integer
Dim X As Integer = 2
Dim Max As Integer = 5
Dim arr(Max, 2) As Integer
For i = 0 To Max - 1
arr(i, 0) = i + 1 '手中佛珠编号
arr(i, 1) = 1 '用来标记是否取出
Next
Min = Max
i = 0
Do
If i = Max Then i = 0 '数过49则重新数
If arr(i, 1) = 1 Then
If arr(i, 0) = X Then '数至X便取出该珠
arr(i, 1) = 0 '并将及标为0
Min = Min - 1 '珠的总数减1
End If
End If
i = i + 1
Loop Until Min = 1
For i = 0 To Max - 1
If arr(i, 1) = 1 Then message.Text = "最后剩下的为" & arr(i, 0) & "个珠" : Exit For
Next
End Sub
</ script >
< html xmlns = " http://www.w3.org/1999/xhtml " >
< body >
< form id = " form1 " runat = " server " >
< asp:label id = " message " runat = " server " />
</ form >
</ body >
</ html >