用python思维解决数麦子问题

184 阅读1分钟

无意中看到一个小故事,名叫《从一到无穷大》,里面记载了一个非常好玩的故事,现在居然被写成了编程题。哈哈,我感觉很有趣,就发出来了。原故事是这样的:

相传,大宰相西萨.本.达依尔 发明了国际象棋并将其呈送给了印度舍罕王,因此舍罕王想要奖赏他。这位聪明的宰相的要求似乎并不过分,“陛下,”他跪拜在国王面前说,“请将第一个麦粒放在第一格,将两个麦粒放在第二格,将四个麦粒放在第三格,将八个麦粒放在第四格......按照这个方法,使得每一格的麦粒的数量都是前一格的两倍。陛下,请赏赐我能填满整个棋盘上64格的所有的麦粒吧!”   “哦,我忠实的仆人,你的要求倒是不高,”国王感叹道,心里窃喜他给这项神奇游戏的发明者的慷慨许诺不会消耗他多少财宝,“你必将如愿以偿。”  当计数开始,一粒一粒麦子被放了上去,还没到20格一袋麦子就用完了,往下每数一格,所需要的麦子迅速增长,哪怕倾尽印度所有的麦子,国王也无法实现他的承诺。因为那可是18446744073709551615粒麦子啊!!!

image.png

通过一串简单的代码就可以轻松解出答案了~

有兴趣了解更多Java和python相关知识的同学可以戳视频继续学习~