题意:

求两个球的体积并

分析:

判断两球的位置关系:

(1)相离:两球体积和

(2)内含:大球的体积

(3)相交:两球的体积和 - 相交部分的体积

球缺体积:

球冠(球缺的曲面外壳)表面积:

h为球缺的高,r为球的半径(投影到平面上就是两圆相交,很容易求得h)

代码:

#include <bits/stdc++.h>#define pi acos(-1.0)using namespace std;typedef struct Point{double x,y,z;
}point;
typedef struct Sphere{point c;double r;
}sphere;
double dis(point a,point b)
{return sqrt((a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y) + (a.z-b.z)*(a.z-b.z));
}
//V=πh^2(r−h/3)
double cal(sphere a,sphere b,double d)    //两球相交部分的体积
{double Ha = a.r - (a.r*a.r-b.r*b.r+d*d)/(2*d);double Hb = b.r - (b.r*b.r-a.r*a.r+d*d)/(2*d);double Va = pi*Ha*Ha*(a.r-Ha/3);double Vb = pi*Hb*Hb*(b.r-Hb/3);return Va+Vb;
}
int main()
{sphere a,b;cin>>a.c.x>>a.c.y>>a.c.z>>a.r;cin>>b.c.x>>b.c.y>>b.c.z>>b.r;double d = dis(a.c,b.c);double Va = 4.0*pi*a.r*a.r*a.r/3;double Vb = 4.0*pi*b.r*b.r*b.r/3;if(d >= a.r+b.r) printf("%.7f\n", Va+Vb);else if(d <= fabs(a.r-b.r)) printf("%.7f\n", max(Va,Vb));else printf("%.7f\n", Va+Vb-cal(a,b,d));return 0;
}

牛客练习赛41:球的体积并【球缺】相关推荐

  1. 解题报告(一)C、(牛客练习赛41 F)简单数学题(数论 + FWT)(3.5)

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

  2. 牛客练习赛41 b 666RPG (01背包)

    时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 题目描述 在欧美,"666"是个令人 ...

  3. 牛客练习赛41 D.最小相似度(思维+bfs)

    传送门 给定nnn个长mmm位的二进制串 求一个二进制串TTT,定义valival_ivali​是TTT与第iii个二进制串相同的位数 使得max(val1,val2....valn)max(val_ ...

  4. 牛客练习赛68 B.牛牛的算术

    牛客练习赛68 B.牛牛的算术 题目链接 题目描述 牛牛最近学习了取模是什么 于是他看到了下面这一道题: 多次询问:每次询问包含一个正整数 n 要求你输出下列结果 ∏i=1n∑j=1i∑k=1ji×j ...

  5. 牛客练习赛58 C.矩阵消除游戏

    牛客练习赛58 C.矩阵消除游戏 题目链接 题目描述 牛妹在玩一个名为矩阵消除的游戏,矩阵的大小是n行m列,第i行第j列的单元格的权值为ai,ja_{i,j}ai,j​ ,牛妹可以进行k个回合的游戏, ...

  6. 牛客练习赛81 E. 小 Q 与函数求和 1( “简单莫比乌斯反演” ,欧拉函数性质)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 牛客练习赛81 E. 小 Q 与函数求和 1( "简单莫比乌斯反演" ) Prob ...

  7. 牛客练习赛34 E little w and Digital Root(数位dp)

    title: 牛客练习赛34 E little w and Digital Root(数位dp) date: 2018-12-17 22:38:37 tags: 数位dp categories:ACM ...

  8. 牛客练习赛34 - C little w and Segment Coverage(思维、树状数组)

    title: 牛客练习赛34 - C little w and Segment Coverage(思维.树状数组) date: 2018-12-15 16:36:55 tags: [树状数组,思维] ...

  9. 牛客练习赛52 | C | [烹饪] (DP,裴蜀定理,gcd)

    牛客练习赛52 C 烹饪 链接:https://ac.nowcoder.com/acm/contest/1084/C来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 327 ...

  10. 牛客练习赛73 D 离别(线段树+右端点排序离线查询)

    牛客练习赛73 D 离别 思路: 对于每一个固定的右端点i,我们都找到一个区间(l,r)使得区间中的点为左端点时 里面最大的的种数为k. 这个可以用队列或者vector来维护. 然后我们对于q个查询, ...

最新文章

  1. nginx的upstream目前支持5种方式的分配
  2. Oracle 性能调优 概述
  3. Java笔记-springframework.ws中拦截器的使用(SOAP)
  4. 英雄联盟S11总决赛EDG夺冠,网友:立下的flag可以兑现了
  5. mz04那智不二越机器人编程_买买买!这些炫酷的机器人已加入进博会“购物车”!...
  6. 做工作流时候 Mybatis 在 insert 之后想获取自增的主键 id,但却总是返回1
  7. retinex算法小感
  8. 【劲峰论道时空分析技术-学习笔记】3 时空演化树
  9. FFmpeg常用命令
  10. 计算机英语背诵发音,英语26个字母的标准发音 26个字母背诵顺口溜
  11. 小程序---宿主环境(常用组件、api)---02
  12. 华为/华三交换机配置NTP时钟同步
  13. 美国大学生数学建模-足球传递网络图
  14. 塑料回收标志相关知识
  15. 今天安利几个实用的APP给你
  16. php制作万年历的步骤_PHP制作万年历
  17. Debian配置国内源
  18. 豪杰超级解霸 V8.3 11月18日发布
  19. JS(javascript) 将网站加入收藏夹
  20. Moto android系統 流量,天翼旗舰 摩托罗拉Droid X ME811评测

热门文章

  1. 移动硬盘不在计算机显示,Win7移动硬盘在电脑上不显示怎么办?移动硬盘不显示盘符的解决办法...
  2. #计算机专业权威期刊#
  3. 在职攻读教育硕士专业学位有计算机专业吗,在职攻读教育硕士专业怎样?
  4. 学习uni-app之微信登录
  5. gbox推荐源_GBox
  6. C语言sb代码,10个重要的算法C语言实现源代码
  7. python计算特征根以及特征向量
  8. 跨国面板数据(1960-2020)十三:GDP、人均GDP、国民收入、储蓄(excel、stata版)
  9. 数据库系统原理与应用教程(019)—— MySQL 的配置文件
  10. 三星手机android版本怎么升级,如何在三星Galaxy手机上更新软件