hongxingb 2022-04-29 18:45 采纳率: 72.7%
浏览 172
已结题

棋盘上的粮食c++求解

. 棋盘上的粮食
【问题描述】
传说,古印度有一个人发明了一种游戏棋,棋盘共64格,玩起来十 分新奇、有趣。他把这种棋献给了国王。国王玩得十分开心,便下 令赏赐献棋人。臣下问献棋人想要什么。献棋人说:他只需要粮 食,要求大王给点粮食便心满意足了。问他需要多少粮食,他说只 要求在棋盘的第一个格子里放一粒米,在第二个格子放两粒米,第 三个格子里放四粒米,总之,后面格子里的米都比它前一格增大一 倍,把64格都放满了就行。国王一听,满口答应。大臣们也都认 为:这点米,算得了什么,便领献棋人去领米。岂料,到后来把所
有仓库里的存米都付出了,还是不够。你知道这是为什么吗?
已知国王一共有N粒米,求最多可以摆满多少个格子,(格子里面的
米粒数量满足献棋人的要求则为摆满,例如第一个格子摆放1粒米就满
了,第2个格子摆放2粒米就满了,依次类推)。
输入:包含一个正整数N;
输出:包含一个正整数,即可以摆放米粒的格子数。
【样例输入】
10000000
【样例输出】
23

  • 写回答

1条回答 默认 最新

  • 吕布辕门 新星创作者: 后端开发技术领域 2022-04-29 19:27
    关注

    你好,如有帮助,麻烦采纳一下

    
    #include<stdio.h>
    #include<stdlib.h>
    
    double A(int n);
    
    int main()
    {
        double n=0,m;
        int i;
        for(i=0;i<64;i++)
        {
            m=A(i);
            n+=m;
        }
        printf("sum = %e\n",n);
        return 0;
    }
    
    double A(int n)
    {
        int i;
        double m=1;
        if(n!=0)
        {
            for(i=1;i<=n;i++)
            {
                m*=2;
            }
        }
        return m;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月2日
  • 已采纳回答 3月25日
  • 创建了问题 4月29日