|
'补全程序
'题目描述:
' 一摞硬币共有m枚,每一枚都是正面朝上。取下最上面的一枚硬币,将它翻面后放回原处。然后取下最上面的2枚硬币,将他们一起翻面后再放回原处。再取3枚,取4枚……直至m枚。然后再从这摞硬币最上面的一枚开始,重复刚才的做法。这样一直做下去,直到这摞硬币中的每一枚又都是正面朝上为止。例如,m为1时,翻两次即可。
'
' 输 入:仅有的一个数字是这摞硬币的枚数m,0<m<1000。
'
' 输 出: 为了使这摞硬币中的每一枚又都是正面朝上所必需翻的次数?
'
' 输入样例:30
'
' 输出样例:899
'
' 程 序:
Public Sub testCoin()
Dim m As Integer, n As Integer
m = InputBox("Input m")
If m > 0 And m < 1000 Then
n = solve(m)
Debug.Print n
End If
End
End Sub
Function solve(m)
Dim i As Integer, t As Integer, d As Integer
If m = 1 Then
solve = 2
Else
d = 2 * m + 1
t = 2: i = 1
Do
If t = 1 Then
solve = ①
Exit Do
End If
If ② Then
solve = i * m - 1
Exit Do
End If
t = ③
i = i + 1
Loop
End If
End Function |
|