前往
大廳
主題

ZeroJudge - f983: Ginobesity 解題心得

Not In My Back Yard | 2021-07-25 00:00:06 | 巴幣 2 | 人氣 284

題目連結:


題目大意:
輸入有多筆測試資料,每筆佔五列。

測資第一列給定三正整數 n 、 m 、 k(1 ≦ n 、 m 、 k ≦ 100),代表 Gino 這個方塊位於 (0, 0, 0) 到 (n, m, k) ,即其長寬高(x 、 y 、 z 方向之長度)分別為 n 、 m 、 k。

測資第二列給定三個非負整數 a1 、 a2 、 a3(0 ≦ a1 、 a2 、 a3 ≦ 5),代表三個密度函數 f(x) 、 g(y) 、 h(z) 的最高次方之值依序為 a1 、 a2 、 a3。

接著的測資三列輸入即分別是 f(x) 、 g(y) 、 h(z) 由高次方到低次方每項的係數(皆為介於 -100 ~ 100 之間的整數)。

已知 Gino 在 (x, y, z) 這個點的密度 D(x, y, z) 為 f(x) + g(y) + h(z)。試問 Gino 的重量為何?請四捨五入至小數點後第二位並輸出。



範例輸入:
1 27 35
1 3 1
35 -25
29 25 -6 -50
26 -2
10 1 47
1 3 1
49 -8
43 -43 34 37
41 -44
10 39 41
1 1 4
17 -35
1 18
27 14 -50 -42 -20
39 1 1
1 1 1
17 -33
1 -39
31 11
1 47 17
1 1 1
35 -23
1 -30
1 -50


範例輸出:
140891231.25
567250.83
247389648506.00
11173.50
-42746.50


解題思維:
可以看到 Gino 的重量即是各個分量(x 、 y 、 z)重量的總和:

以 x 分量為例,f(x) 將積分等於是在求線段本身(這邊是 x = 0 到 x = n)的「重量」,而 y = 0 ~ m 、 z = 0 ~ k 這個範圍中都有著一條 x = 0 到 x = n 之線段,因此將會貢獻 m × k × (x = 0 到 x = n 之線段「重量」) 單位的重量。

而其他分量也是同理。

而積分的求法可以參見這題




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

相關創作

更多創作