牛客練習賽41 E 球的體積並 幾何

2021-09-11 22:13:44 字數 2060 閱讀 9333

時間限制:c/c++ 1秒,其他語言2秒

空間限制:c/c++ 32768k,其他語言65536k

special judge, 64bit io format: %lld

題目描述

某天lililalala正在玩一種奇妙的吃雞遊戲–因為在這個遊戲裡會同時有兩個圓形安全區(他們可能相交)。

lililalala覺得求圓的面積並太簡單了,所以想把這個問題公升級一下。

現在在三維空間裡有 2 個球形安全區,分別用四元組

,y1,

z1,r

1>

,y1,

z1,r

1>

和,y2,

z2,r

2>

,y2,

z2,r

2>

表示,其中 r1、

r2r1、r2

r1、r

2表示球半徑, (x1

,y1,

z1)(x1,y1,z1)

(x1,y1

,z1)

和 ( x2

,y2,

z2)(x2,y2,z2)

(x2,y2

,z2)

表示球心

lililalala想知道安全區的總體積是多少?即求這兩個球的體積並。

輸入描述:

輸入有兩行。

第一行四個實數 x1,

y1,z

1,r1

x1,y1,z1,r1

x1,y1,

z1,r

1–第乙個球的球心座標和半徑。

第二行四個實數 x2,

y2,z

2,r2

x2,y2,z2,r2

x2,y2,

z2,r

2–第二個球的球心座標和半徑。

保證所有輸入的座標和半徑的範圍都在 [

−100

,100

][−100,100]

[−100,

100]

內。輸出描述:

輸出一行乙個實數–表示兩個球的體積並,你的答案被認為正確,當且僅當絕對誤差不超過10−6。

示例1

輸入0 0 0 1

2 0 0 1

輸出8.3775804

示例2

輸入0 0 0 1

0 0 0 0.5

輸出4.1887902

兩個球不相交或者小球在大球內部的情況非常簡單,結果就是球的體積

兩球相交的時候,即 fab

s(r1

−r2)

2fabs(r_1-r_2)fa

bs(r

1​−r

2​)<

d​+r2

​的情況

結果是兩個球的體積減去它們球缺的體積就好了

球缺即v=

πh2(

r−h3

)\large v =\pi h^2(r-\frac)

v=πh2(

r−3h

​)如圖所示,上邊被切下來的部分就是球缺…我們需要知道它的體積

牛客練習賽41E 球的體積並

題解 先判斷一下兩個球不相交以及包含的關係,比較好考慮,然後就是兩個球有交集的時候,主要就是求兩個弧面對應的高,可以設夾角,然後利用cos角的關係就是餘玄定理表示對應的高,最後就是求相交的體積,得出結果。include include include include include using na...

牛客練習賽41 E 球的體積並 球的體積並模板

題意 求兩個球的體積並做法 用球缺公式 計算幾何模板即可解決。球缺公式為 v h2 3 r h 3v frac v 3 h2 3r h 其中r rr是球的半徑,h hh是球缺的高。include include include include using namespace std const in...

球體相交體積模板 牛客練習賽41 B 球的體積並

某天lililalala正在玩一種奇妙的吃雞遊戲 因為在這個遊戲裡會同時有兩個圓形安全區 他們可能相交 lililalala覺得求圓的面積並太簡單了,所以想把這個問題公升級一下。現在在三維空間裡有 2 個球形安全區,分別用四元組 和 表示,其中 r1 r2 r1 r2表示球半徑,x1,y1,z1 x...