题意略。

这个题目最关键的是在于计算球冠的体积。令球冠体积为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. tomcat 部署war项目

    前提是 jdk环境已配好 把项目war包放到tomcat的webapps目录下 启动tomcat: 这里我把8080端口修改成了80 IP也修改了 如果没修改直接输入localhost:8080/te ...

  2. LinkedList 源码分析(JDK 1.8)

    1.概述 LinkedList 是 Java 集合框架中一个重要的实现,其底层采用的双向链表结构.和 ArrayList 一样,LinkedList 也支持空值和重复值.由于 LinkedList 基 ...

  3. 疑难杂症——关于EntityFramework的SqlQuery方法的执行效率差异的探讨

    前言:最近项目上面遇到一个问题,在Code First模式里面使用EntityFramework的SqlQuery()方法查询非常慢,一条数据查询出来需要10秒以上的时间,可是将sql语句放在plsq ...

  4. Python判断文件是否存在的三种方法【转】

    转:http://www.cnblogs.com/jhao/p/7243043.html 通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错.所以最好在做任何操作之前,先 ...

  5. Switch-case 内定义变量的问题

    Switch-case 内定义变量的问题 这个问题需要分开讨论,C 语言和 C++ 的标准定义是不同的. C++ int Caset(int a) { switch (a) { case 1: int ...

  6. 《剑指offer》数组中出现次数超过数组长度一半的数字

    题目: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2.如 ...

  7. MySQL模糊查询中通配符的转义

    sql中经常用like进行模糊查询,而模糊查询就要用到百分号“%”,下划线“_”这些通配符,其中“%”匹配任意多个字符,“_”匹配单个字符.如果我们想要模糊查询带有通配符的字符串,如“60%”,“us ...

  8. linux 安装icu库

     先下载源码包并解压 然后安装 cd /icu/source ./configure --prefix=/usr/local/icu gmake make install  

  9. cJSON使用

    cJSON是使用C语言编写的   关于JSON数据的   编解码库,使用方便简单 编译时注意后面要跟-lm参数,否则编译会报错 解析JSON数据包流程: 1.调用cJSON_Parse()函数,解析J ...

  10. python源码书籍

    <Python源码剖析>一书现在很难买到,目前大部分都是电子书. 为了更好地利用Python语言,无论是使用Python语言本身,还是将Python与C/C++交互使用,深刻理解Pytho ...