失算问题(一)

简介: 版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/46676393 1:问题提出相传现在流行的国际象棋是古代舍罕王的在想达依儿发明的。
版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/46676393

1:问题提出

相传现在流行的国际象棋是古代舍罕王的在想达依儿发明的。舍罕王十分喜爱象棋,决定让宰相自己要求得到什么赏赐。这位聪明的宰相指着8x8共64格的象棋盘说:陛下,请赏赐给我一些麦子吧,就在棋盘的第1个格子中放1粒,第2格放2粒,第3格放4粒,以后每一格子都比前一格增一倍,依次放完棋盘上的64格,我就感恩不尽了。

舍罕王让人扛来一袋麦子,他要兑现他的许诺。

请问,国王能兑现他的诺言吗?共有多少麦子赏赐他的宰相?合多少立方米(1立方米麦子1.42e8粒)?如果把这些麦子堆成一个正圆锥形的麦堆,这堆麦堆约多高?

2:分析

第1格1粒,第2格2粒,第3格4粒,第4格8粒,第5格16粒,择总粒数应该为:

总粒数 = 1 + 2 + 2(2) + 2(3) + 2(4) + … + 2(63) [其中2(2)的意思为2的2次方]

当算出麦子的总粒数之后,其他的就好算了。

3:程序实现

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define N 1.42e8
#define PI 3.1415926

/**
 * 舍罕王的失算
 */
int main()
{
    double t = 1; /* 表示第一个1粒米 */
    double s = 1; /* 表示米的总粒数 */
    int n = 1; /* 表示第n个格子  */
    int size = 1;
    double v; /* 平方数 */
    double h; /* 高度 */

    printf("请输入总格数:\n");
    scanf("%d",&size);

    for(n = 1; n < size; n++){
        t = t * 2;
        s = s + t;
    }

    printf("总粒数为:%.3e粒\n",s);

    v = s / N;
    printf("折合体积约为: %.0f立方米\n",v);

    /** 由圆锥体的体积计算为 v = 1/3*s*h得 **/

    double h2 = v * 9 / PI;
    h = pow(h2,1.0/3);

    printf("正圆锥的高度为: %.0f米\n",h);

    return 0;
}

4:程序结果

这里写图片描述

目录
相关文章
|
7月前
|
C语言
C语言---试计算在区间1 到n 的所有整数中,数字x(0 ≤ x ≤ 9)共出现了多少次?
C语言---试计算在区间1 到n 的所有整数中,数字x(0 ≤ x ≤ 9)共出现了多少次?
|
7月前
|
弹性计算 运维 安全
阿里云ecs使用体验
整了台服务器部署项目上线
|
6月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的微信智能招聘小程序的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的微信智能招聘小程序的详细设计和实现(源码+lw+部署文档+讲解等)
|
测试技术
如何编写测试计划?
如何编写测试计划?
|
JavaScript
JS遍历对象的七种方法(一)
我根据阮老师的《ES6标准入门》学习并总结了七种遍历对象的方法,我会将分别介绍这七种方法并进行详细的区分,并将从属性可枚举性问题与遍历方法两个大方面讲述全文,其中可枚举性是掌握遍历对象之前的的铺垫,请读者耐心学习,掌握遍历对象的七种方法!
184 1
|
XML 图形学 数据格式
SVG 可缩放矢量图形
SVG 可缩放矢量图形
66 0
Java-单机版的书店管理系统(练习设计模块和思想_系列汇总(3))
Java-单机版的书店管理系统(练习设计模块和思想_系列汇总)
144 0
|
存储 索引 容器
|
机器学习/深度学习
2011的n次方
题目:http://noi.openjudge.cn/ch0204/2991/ 总时间限制:1000ms  内存限制: 65536kB 描述 已知长度最大为200位的正整数n,请求出2011^n的后四位。
1107 0