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 & ...
随机推荐
- [NOI2021] 量子通信
嗯. NOI2021最白给的一题. PS:很后悔没打同步赛,少了一张同步赛Ag 考虑加黑的256位01串,我们思考一下. 因为\(k\)小于16,所以我们直接分成16块.所以一定可以的绝对有一块是完全 ...
- Codeforces 571D - Campus(并查集+线段树+DFS 序,hot tea)
Codeforces 题目传送门 & 洛谷题目传送门 看到集合的合并,可以本能地想到并查集. 不过这题的操作与传统意义上的并查集不太一样,传统意义上的并查集一般是用来判断连通性的,而此题还需支 ...
- Atcoder Grand Contest 031 D - A Sequence of Permutations(置换+猜结论)
Atcoder 题面传送门 & 洛谷题面传送门 猜结论神题. 首先考虑探究题目中 \(f\) 函数的性质,\(f(p,q)_{p_i}=q_i\leftarrow f(p,q)\circ p= ...
- NextPolish对基因组进行polish
NextPolish由未来组开发对基因组序列进行polish的工具,对三代以及二代均可进行polish. gituhp地址:https://github.com/Nextomics/NextPolis ...
- R语言中的read.table()
参考资料:http://www.cnblogs.com/xianghang123/archive/2012/06/06/2538274.html read.table(file, header = F ...
- exit(0) exit(1) return() 3个的区别
exit(0):正常运行程序并退出程序: exit(1):非正常运行导致退出程序: return():返回函数,若在主函数中,则会退出函数并返回一值. 详细说: 1. return返回函数值,是关键字 ...
- Linux三剑客之老三grep
说明: Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.工作中我们常常用它来过滤出我们想要的数据. 格式: grep [OPTIONS] 基本参 ...
- Hi3516开发笔记(六):通过HiTools使用USB/串口将uboot、kernel、roofts和userdata按照分区表烧写镜像
若该文为原创文章,转载请注明原文出处本文章博客地址:https://hpzwl.blog.csdn.net/article/details/121706033红胖子(红模仿)的博文大全:开发技术集合( ...
- MapReduce07 Join多种应用
目录 1 Join多种应用 1.1 Reduce Join 1.2 Reduce Join实例实操 需求 需求分析 Map数据处理 Reduce端合并(数据倾斜) 代码实现 JoinBean类 Joi ...
- idea 启动debug的时候throw new ClassNotFoundException(name)
idea 启动debug的时候throw new ClassNotFoundException(name) 启动debug就跳转到此界面 解决办法 这个方法只是忽略了抛异常的点,并没有真正解决问题.后 ...