棋盘麦粒问题

来源:1-1 重识C语言

秦寻

2018-05-14 21:40

相传古印度宰相达依尔,是国际象棋的发明者。有一次,国王因为他的贡献要奖励他,问他想要什么。达依尔说:“只要在国际象棋棋盘上(8×8共64格)摆上这么些麦子就行了:第一格一粒,第二格两粒,……,后面一格的麦子总是前一格麦子数的两倍,摆满整个棋盘,我就感恩不尽了。”国王一想,这还不容易,刚想答应,如果你这时在国王旁边站着,你会不会劝国王别答应,为什么,你编程计算一下大约需要多少立方小麦(1立方米约为142000000粒)? 用c语言咋求?

写回答 关注

1回答

  • weibo_含含蓄蓄咚咚锵锵_0
    2018-05-15 09:21:54

    #include <stdio.h>

    int main()

    {

        int i;
        int num=1;
        for(i=1;i<=65;i++){
            num*=2;
        }
        printf("摆满棋盘需要%d粒麦子\n",num-1);
        //数学思路:总数=1+2+。。。。。。+2的64次方
        //              =2的65次方减1
        
        //你可以把2的64次方视为1,整个过程倒过来就是
        //1+1/2+1/4+....+1/n=2-1/n

    }

Linux C语言编程基本原理与实践

本视频教程介绍C语言基本工作原理以及适用与C的实际开发方式

204872 学习 · 469 问题

查看课程

相似问题