Python 麦粒问题

  1. 初始状态

    • count = 1​(第 1 格)
    • wheat = 1​(第 1 格放 1 粒)
  2. 循环过程

    • 第 1 次循环:放 1 粒,count​ ​变为 2
    • 第 2 次循环:放 2 粒,count​ ​变为 3
    • 第 3 次循环:放 4 粒,count​ ​变为 4
    • 第 n 次循环:放 2^(n-1)粒,count​ ​变为 n+1
  3. 循环结束时的状态

    • sum <= 0​ ​时,循环结束
    • 此时 count​ ​的值是下一格的编号
    • 实际上最后一格成功的放置是 count-1​ ​格
  4. 为什么是 count-2​:

    • 如果 sum == 0​:说明刚好放满 count-1​ ​格
    • 如果 sum < 0​:说明 count-1​ ​格没有完全放满,只能算放满到 count-2​ ​格

举例说明
假设循环结束时:

  • count = 5​(表示下一格是第 5 格)
  • sum < 0​(表示第 4 格没有完全放满)

那么实际放满的格子是:

  • 第 1 格 ✓
  • 第 2 格 ✓
  • 第 3 格 ✓
  • 第 4 格 ✗(没放满)

所以总共放满了 3​ ​格,即 count-2 = 5-2 = 3​ ​格。

简单记忆:count​ ​总是比实际放满的格子数多 1(因为循环结束后它指向下一格),当最后一格没放满时,还要再减 1。

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容