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;
}

最新文章

  1. 搜索引擎关键词劫持之.net篇
  2. 【bzoj2006】 NOI2010—超级钢琴
  3. c++用双向链表实现模板栈
  4. python基础07 函数
  5. .Net core环境准备
  6. Nginx入门笔记之————配置文件结构
  7. 用C#操作vss、msbuild、reactor
  8. map 转换 xml ; xml转map
  9. WinScp上传和下载
  10. Java study 1:The note of studying Socket which based UDP
  11. table-cell完成左侧定宽,右侧定宽及左右定宽等布局
  12. mac中利用brew实现多版本php共存以及任意切换
  13. 关于使用Unity开发Kinect时出现的Runtime Error错误的解决方式
  14. eureka服务搭建
  15. Flutter项目之app升级方案
  16. numpy中的广播
  17. postgresql-JSON使用
  18. webpack 开发环境与生成环境的 配置
  19. 自己写的开源MVC-easyMVC分享
  20. [算法]从一道题引出variable-precision SWAR算法

热门文章

  1. 雪花算法对System.currentTimeMillis()优化真的有用么?
  2. JSOI2021 游记
  3. MISA(在线)注释叶绿体基因组SSR
  4. 使用SpringBoot实现文件的下载
  5. A Child&#39;s History of England.23
  6. Hive(一)【基本概念、安装】
  7. org.apache.hadoop.hive.ql.metadata.HiveException: Internal Error: cannot generate all output rows for a Partition解决
  8. Web安全学习二
  9. Shell学习(十)——du、df命令
  10. Oracle——创建存储过程