Update

  • \(\texttt{2021.12.4}\) 修改了原先的错误代码,给各位造成影响,在此表示很抱歉。

Content

大象要喝 \(20\) 升水,但现在只有一个深 \(h\) 厘米,半径 \(r\) 厘米的桶。求大象至少要喝多少桶水。

数据范围:未知。

Solution

我们发现,这个桶其实就是一个圆柱体。那么我们回想一下,圆柱体的体积怎么算?

和其他柱体一样,圆柱也可以用 \(V=Sh\) 这个公式来算,又因为圆的面积 \(S=\pi r^2\),因此,圆柱的体积就可以表示为 \(V=\pi r^2h\)。

那么在 C++ 中怎么表示呢?

有些同学可能知道,\(\pi\) 在 C++ 中可以用 acos(-1.0) 来表示,但是这超出了“入门”的范围。对于初学者,我们只需要取 \(\pi\) 的约值就好了,注意建议保留 \(7\) 位小数及以上,即 \(3.1415926\dots\)。

那么回到这道题,大象要喝 \(20\) 升 = \(2\times 10^4\text{ ml}\) 水,所以我们不妨设要喝的桶数为 \(x\),则由题可以得到:

\[\begin{aligned}Vx&=20000\\\Rightarrow\pi r^2hx&=20000\\\Rightarrow x&=\dfrac{20000}{\pi r^2h}\end{aligned}
\]

但是我们发现,\(x\) 绝大部分情况下不是整数,这可怎么办呢?这里如果向下取整的话又会导致最终大象喝的水 \(<20000\text{ ml}\),那么再喝一桶不是满的水不就好了吗?这相当于数学中的向上取整,表示为 \(\left\lceil x\right\rceil\),在 C++ 中的函数为 ceil(),需要调用 cmath 库。因此,我们可以得到最终的答案为 \(\left\lceil\dfrac{20000}{\pi r^2h}\right\rceil\),注意为了提高精度,需要将 \(20000\) 或者 \(\pi r^2h\) 变为一个浮点型变量。

Code

以下为笔者 18 年在 Openjudge 上面做这道题目时的代码。

#include <bits/stdc++.h>
using namespace std; const double Pi=3.14159; int main() {
int r,h,v,ans;
cin>>h>>r;
v=Pi*r*r*h;
if(20000%(int)v!=0)
ans=20000/(int)v+1;
else
ans=20000/(int)v;
cout<<ans;
return 0;
}

LuoguB2029 大象喝水 题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

随机推荐

  1. Python实战:截图识别文字,过万使用量版本!(附源码!!)

    前人栽树后人乘凉,以不造轮子为由 使用百度的图片识字功能,实现了一个上万次使用量的脚本. 系统:win10 Python版本:python3.8.6 pycharm版本:pycharm 2021.1. ...

  2. Codeforces 258E - Little Elephant and Tree(根号暴力/线段树+标记永久化/主席树+标记永久化/普通线段树/可撤销线段树,hot tea)

    Codeforces 题目传送门 & 洛谷题目传送门 yyq:"hot tea 不常有,做过了就不能再错过了" 似乎这是半年前某场 hb 模拟赛的 T2?当时 ycx.ym ...

  3. Codeforces 1413F - Roads and Ramen(树的直径+找性质)

    Codeforces 题目传送门 & 洛谷题目传送门 其实是一道还算一般的题罢--大概是最近刷长链剖分,被某道长链剖分与直径结合的题爆踩之后就点开了这题. 本题的难点就在于看出一个性质:最长路 ...

  4. FVCOM编译过程详解

    本文目的旨在介绍fvcom编译的全过程,顺便介绍linux中make命令的文件写法和一般的编程过程简述一下. 1.编程过程 编程,一般就是编写可执行程序过程.这个过程主要是源文件生成中间代码文件,再到 ...

  5. 34、在排序数组中查找元素的第一个和最后一个位置 | 算法(leetode,附思维导图 + 全部解法)300题

    零 标题:算法(leetode,附思维导图 + 全部解法)300题之(34)在排序数组中查找元素的第一个和最后一个位置 一 题目描述 二 解法总览(思维导图) 三 全部解法 1 方案1 1)代码: / ...

  6. javaSE高级篇1 — 异常与多线程基础

    1.异常的体系结构  注:Throwable是一个类,不是一个接口,这个类里面是描述的一些Error和Exception的共性,如图所示: 异常 / 错误是什么意思? 定义:指的是程序运行过程中,可能 ...

  7. Spark检查点机制

    Spark中对于数据的保存除了持久化操作之外,还提供了一种检查点的机制,检查点(本质是通过将RDD写入Disk做检查点)是为了通过lineage(血统)做容错的辅助,lineage过长会造成容错成本过 ...

  8. R语言学习记录(一)

    (R基础) 对象:什么是对象呢,其实就是一个名称而已,在R中存储的数据 就是一个R对象 a <- 1 ###其中'<-'表示的是一个赋值符号 这句话表示的是,将1赋值给a b <- ...

  9. myatoi

    atoi (表示 ascii to integer)是把字符串转换成整型数的一个函数,应用在计算机程序和办公软件中.int atoi(const char *nptr) 函数会扫描参数 nptr字符串 ...

  10. midi的一些概念,包括一些音乐的概念

    参考:http://www.yueqixuexi.com/jita/20180918205363.html https://blog.csdn.net/meicheng777/article/deta ...