HDU 5060
题意略。
这个题目最关键的是在于计算球冠的体积。令球冠体积为V。
我们可以用祖暅原理来计算V,
这里,可以看出,球冠的体积等于左图的上半个圆柱减去那个倒扣的圆台。
祖暅原理:界于两个平行平面之间的两个立体,被任一平行于这两个平面的平面所截,如果两个截面的面积相等,则这两个立体的体积相等。
V = Pi * r^2 * (r - y) - V(圆台)
本题分为五种情况来讨论:
1.球完全内含于圆柱。
2.球左右凸出圆柱,但是上下不突出。
3.球左右不凸出圆柱,但是上下突出圆柱。
4.球上下左右均凸出,但是尚未包含圆柱。
5.球包含圆柱。
#include<bits/stdc++.h>
#define Pi acos(-1.0)
using namespace std; double R,HR,HZ; int main(){
while(scanf("%lf%lf%lf",&R,&HR,&HZ) == ){
double part1,part2;
double v1 = Pi * R * R * R * 4.0 / 3.0;
double v2 = Pi * HR * HR * HZ * ;
if(R <= HR && R <= HZ){
part1 = v1;
part2 = v2;
}
else if(R <= HR && R > HZ){
double add = Pi * R * R * (R - HZ) - 1.0 / 3.0 * Pi * (R - HZ) * (HZ * HZ + R * R + HZ * R);
part1 = v1 - * add;
part2 = v2 + * add;
}
else if(R > HR && R <= HZ){
double d = sqrt(R * R - HR * HR);
double add = Pi * R * R * (R - d) - 1.0 / 3.0 * Pi * (R - d) * (d * d + R * R + d * R);
add = 2.0 / * Pi * R * R * R - add;
add *= ;
add -= Pi * HR * HR * * d;
part1 = v1 - add;
part2 = v2 + add;
}
else if(R > HR && R > HZ && R < sqrt(HR * HR + HZ * HZ)){
double add1 = Pi * R * R * (R - HZ) - 1.0 / 3.0 * Pi * (R - HZ) * (HZ * HZ + R * R + HZ * R);
double d = sqrt(R * R - HR * HR);
double add2 = Pi * R * R * (R - d) - 1.0 / 3.0 * Pi * (R - d) * (d * d + R * R + d * R);
add2 = 2.0 / 3.0 * Pi * R * R * R - add2;
add2 *= ;
add2 -= Pi * HR * HR * * d;
part1 = v1 - * add1 - add2;
part2 = v2 + * add1 + add2;
}
else if(R >= sqrt(HR * HR + HZ * HZ)){
part1 = v2;
part2 = v1;
}
printf("%lf\n",part1 / part2);
}
return ;
}
HDU 5060的更多相关文章
- hdu 5060 五种情况求圆柱体与球体交
http://acm.hdu.edu.cn/showproblem.php?pid=5060 官方题解http://bestcoder.hdu.edu.cn/给复杂了 实际上用圆柱体与球体体积差的积分 ...
- hdu 5060 War
War Time Limit: 8000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- [kmp+dp] hdu 4628 Pieces
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4622 Reincarnation Time Limit: 6000/3000 MS (Java/Ot ...
- HDOJ 2111. Saving HDU 贪心 结构体排序
Saving HDU Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- 【HDU 3037】Saving Beans Lucas定理模板
http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...
- hdu 4859 海岸线 Bestcoder Round 1
http://acm.hdu.edu.cn/showproblem.php?pid=4859 题目大意: 在一个矩形周围都是海,这个矩形中有陆地,深海和浅海.浅海是可以填成陆地的. 求最多有多少条方格 ...
- HDU 4569 Special equations(取模)
Special equations Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u S ...
- HDU 4006The kth great number(K大数 +小顶堆)
The kth great number Time Limit:1000MS Memory Limit:65768KB 64bit IO Format:%I64d & %I64 ...
- HDU 1796How many integers can you find(容斥原理)
How many integers can you find Time Limit:5000MS Memory Limit:32768KB 64bit IO Format:%I64d ...
随机推荐
- 修改ncnn的openmp异步处理方法 附C++样例代码
ncnn刚发布不久,博主在ios下尝试编译. 遇上了openmp的编译问题. 寻找各种解决方案无果,亲自操刀. 采用std::thread 替换 openmp. ncnn项目地址: https://g ...
- lambda高级进阶--组合函数
只有一个参数的函数可以将一个值转换成另一个值,如果你有2个这样的转换函数,那么在进行一个转换之后在进行第二个转换,其实也是一个中转换. 说到这里,先说一下我个人的一个习惯,我在写javaBean的se ...
- 无废话XML--DOM4J
Dom4j 是一个易用的.开源的库,用于 XML ,XPath 和 XSLT .它应用于 Java 平台,采用了 Java 集合框架并完全支持 DOM ,SAX 和 和 JAXP .我们可以很 ...
- RChain节点通信机制(上)
在介绍RChain的通信机制之前,先简单介绍一些以太坊的通信机制,它包括以下几个方面,如下详细了解以太坊的通信机制,可以查看https://github.com/ethereum/devp2p/blo ...
- nodejs爬虫笔记(五)---利用nightmare模拟点击下一页
目标 以腾讯滚动新闻为例,利用nightmare模拟点击下一页,爬取所有页面的信息.首先得感谢node社区godghdai的帮助,开始接触不太熟悉nightmare,感觉很高大上,自己写代码的时候问题 ...
- nodejs爬虫笔记(四)---利用nightmare解决加载更多问题
目标: 解决页面加载更多问题.笔记三中,我们只爬取到网页的部分信息,而点击加载更多后的页面内容是没有提取到的.开始我的想法是找到加载更多的数据接口(可参照:http://www.jianshu.com ...
- 嵌套for in循环组合cat方式文件中包含空格问题
关于循环嵌套使用for循环的空格问题 原创不易,转载请注明 需求: 现有两个功文件,需要将文件拼接 [root@localhost ~]# cat name 111 222 223 333 444 5 ...
- Prime - 程序员的修养
求质数算法的N种境界 求质数算法的N种境界[1] - 试除法和初级筛法 过程 尽管题目并没有要我们写一个最优的算法,但是身为一个程序员,优化应该是一种习惯,在编程的过程中,随着思考进行优化. 如果你只 ...
- Python之Django rest_Framework框架源码分析
#!/usr/bin/env python # -*- coding:utf-8 -*- from rest_framework.views import APIView from rest_fram ...
- 【原创】POI 生成Excel文件并下载
ι 版权声明:本文为博主原创文章,未经博主允许不得转载. 效果图: 实现 1.在pom中添加依赖: <!-- https://mvnrepository.com/artifact/org.apa ...