题意略。

这个题目最关键的是在于计算球冠的体积。令球冠体积为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的更多相关文章

  1. hdu 5060 五种情况求圆柱体与球体交

    http://acm.hdu.edu.cn/showproblem.php?pid=5060 官方题解http://bestcoder.hdu.edu.cn/给复杂了 实际上用圆柱体与球体体积差的积分 ...

  2. hdu 5060 War

    War Time Limit: 8000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  3. [kmp+dp] hdu 4628 Pieces

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4622 Reincarnation Time Limit: 6000/3000 MS (Java/Ot ...

  4. HDOJ 2111. Saving HDU 贪心 结构体排序

    Saving HDU Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  5. 【HDU 3037】Saving Beans Lucas定理模板

    http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...

  6. hdu 4859 海岸线 Bestcoder Round 1

    http://acm.hdu.edu.cn/showproblem.php?pid=4859 题目大意: 在一个矩形周围都是海,这个矩形中有陆地,深海和浅海.浅海是可以填成陆地的. 求最多有多少条方格 ...

  7. HDU 4569 Special equations(取模)

    Special equations Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u S ...

  8. HDU 4006The kth great number(K大数 +小顶堆)

    The kth great number Time Limit:1000MS     Memory Limit:65768KB     64bit IO Format:%I64d & %I64 ...

  9. HDU 1796How many integers can you find(容斥原理)

    How many integers can you find Time Limit:5000MS     Memory Limit:32768KB     64bit IO Format:%I64d ...

随机推荐

  1. Java数据持久层框架 MyBatis之背景知识一

    对于MyBatis的学习而言,最好去MyBatis的官方文档:http://www.mybatis.org/mybatis-3/zh/index.html 对于语言的学习而言,马上上手去编程,多多练习 ...

  2. mysql 查询今天,昨天,上个月sql语句 注解

    今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天Select * FROM 表名 Where TO_DAYS( NOW( ) ...

  3. 理解rem实现响应式布局原理及js动态计算rem

    前言 移动端布局中,童鞋们会使用到rem作为css单位进行不同手机屏幕大小上的适配.那么来讲讲rem在其中起的作用和如何动态设置rem的值. 1.什么是rem rem是相对于根元素(html标签)的字 ...

  4. ClassLoader.getResourceAsStream() 与 Class.getResourceAsStream()的区别

        Class.getResourceAsStream() 会指定要加载的资源路径与当前类所在包的路径一致. 例如你写了一个MyTest类在包com.test.mycode 下,那么MyTest. ...

  5. python_15_内置函数

    有哪些内置函数? -- all()                              - 可迭代对象,全为真返回真 -- any()                            - ...

  6. python_改变字符串中文本格式?

    案例: 某软件的日志文件,其中日期格式为year-moth-day: 2016-04-21 10:50:30 python 2014-05-22 10:50:30 python 2017-06-23 ...

  7. CentOS 7 修改SSH端口号 和 ssh无法使用密码登录 和 查看pid 端口占用

    如下示例把SSH默认端口22改为122. 1 修改/etc/ssh/sshd_config文件 #Port #找到改行,如果还想继续使用该端口,可以把#去掉,如果使用新端口,可以默认不管 Port # ...

  8. 【转】<string> <string.h> <cstring>的区别

    #include < string.h > void main() { string aaa = " abcsd d " ; printf( " lookin ...

  9. all,any函数

    all函数:当矩阵全为非零元素时返回1,否则(存在零元素),返回0: any函数:当矩阵中存在非零      1     1     1     1      1     1     1     1 ...

  10. Git Batch命令(转)

    echo 和 @ 回显命令 @ #关闭单行回显 echo off #从下一行开始关闭回显 @echo off #从本行开始关闭回显.一般批处理第一行都是这个 echo on #从下一行开始打开回显 e ...