猴子搬香蕉

一个小猴子边上有100根香蕉,它要走过50米才能到家, 每次它最多搬50根香蕉,(多了就被压死了),它每走1米就要吃掉一根,请问它最多能把多少根香蕉搬到家里。

提示:他可以把香蕉放下往返的走,但是必须保证它每走一米都能有香蕉吃。也可以走到n米时,放下一些香蕉,拿着n根香蕉走回去重新搬50根。

我的推理过程: 以每次小猴子搬最多香蕉为前提, 则100根香蕉需要2趟, 在距离为1米的情况下, 小猴子第1趟搬50根到1米处,消耗1根,带回1根走到原点, 刚好又消耗1根,再将第2趟50根搬到1米处, 这时剩下97根..以此类推, 设当前的总数需要 x 趟才能搬到 1 米, 则消耗的数量为 2x - 1, x 在此题中为 100 / 50 = 2..根据以上关系, 推出下列程序(vbs), 推导结果和网上搜索到的答案是一致的(16根).

Option Explicit

'代码: 萧月痕(xiaoyuehen)
'msn: xiaoyuehen(at)msn.com
'日期: 2006-2-22

Dim intTotal
Dim intEvery
Dim intIndex
Dim intMod

Dim strMessage

intTotal = 110
intEvery = 50

Dim bFlag
bFlag = True

For intIndex = 1 to 50
  If intTotal Mod intEvery = 0 Then
    intMod = intTotal / intEvery
  Else
    intMod = intTotal / intEvery + 1
  End If

  intTotal = intTotal - (2 * intMod - 1)
  If (intMod = 1) And (bFlag = True) Then
    strMessage = strMessage & "* 走了 " & intIndex & " 米, 还剩香蕉 " & intTotal & " 根" & vbCrLf &

vbCrLf
    bFlag = False
  End If
Next

strMessage = strMessage & "* 最后还剩香蕉 " & intTotal & " 根"
MsgBox strMessage

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值