LuoguB2029 大象喝水 题解
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\),则由题可以得到:
\]
但是我们发现,\(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 大象喝水 题解的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
随机推荐
- Python实战:截图识别文字,过万使用量版本!(附源码!!)
前人栽树后人乘凉,以不造轮子为由 使用百度的图片识字功能,实现了一个上万次使用量的脚本. 系统:win10 Python版本:python3.8.6 pycharm版本:pycharm 2021.1. ...
- Codeforces 258E - Little Elephant and Tree(根号暴力/线段树+标记永久化/主席树+标记永久化/普通线段树/可撤销线段树,hot tea)
Codeforces 题目传送门 & 洛谷题目传送门 yyq:"hot tea 不常有,做过了就不能再错过了" 似乎这是半年前某场 hb 模拟赛的 T2?当时 ycx.ym ...
- Codeforces 1413F - Roads and Ramen(树的直径+找性质)
Codeforces 题目传送门 & 洛谷题目传送门 其实是一道还算一般的题罢--大概是最近刷长链剖分,被某道长链剖分与直径结合的题爆踩之后就点开了这题. 本题的难点就在于看出一个性质:最长路 ...
- FVCOM编译过程详解
本文目的旨在介绍fvcom编译的全过程,顺便介绍linux中make命令的文件写法和一般的编程过程简述一下. 1.编程过程 编程,一般就是编写可执行程序过程.这个过程主要是源文件生成中间代码文件,再到 ...
- 34、在排序数组中查找元素的第一个和最后一个位置 | 算法(leetode,附思维导图 + 全部解法)300题
零 标题:算法(leetode,附思维导图 + 全部解法)300题之(34)在排序数组中查找元素的第一个和最后一个位置 一 题目描述 二 解法总览(思维导图) 三 全部解法 1 方案1 1)代码: / ...
- javaSE高级篇1 — 异常与多线程基础
1.异常的体系结构 注:Throwable是一个类,不是一个接口,这个类里面是描述的一些Error和Exception的共性,如图所示: 异常 / 错误是什么意思? 定义:指的是程序运行过程中,可能 ...
- Spark检查点机制
Spark中对于数据的保存除了持久化操作之外,还提供了一种检查点的机制,检查点(本质是通过将RDD写入Disk做检查点)是为了通过lineage(血统)做容错的辅助,lineage过长会造成容错成本过 ...
- R语言学习记录(一)
(R基础) 对象:什么是对象呢,其实就是一个名称而已,在R中存储的数据 就是一个R对象 a <- 1 ###其中'<-'表示的是一个赋值符号 这句话表示的是,将1赋值给a b <- ...
- myatoi
atoi (表示 ascii to integer)是把字符串转换成整型数的一个函数,应用在计算机程序和办公软件中.int atoi(const char *nptr) 函数会扫描参数 nptr字符串 ...
- midi的一些概念,包括一些音乐的概念
参考:http://www.yueqixuexi.com/jita/20180918205363.html https://blog.csdn.net/meicheng777/article/deta ...