主題

ZeroJudge - c005: 10300 - Ecological Premium 解題心得

Not In My Back Yard | 2021-03-21 23:40:26 | 巴幣 0 | 人氣 47

題目連結:


題目大意:
輸入第一列給定一正整數 n (n < 20),代表有 n 筆測試資料。每筆測資的開頭第一列給定一正整數 f (0 < f < 20),代表有 f 位農夫。接著有 f 列輸入,每列給定三正整數,代表其中一位農夫的農場面積、動物數量以及環保等級。

每位農夫能拿到一些獎金,其計算方式為先計算每隻動物的平均居住空間,乘以環保等級,最後再乘以動物數量之值即是獎金。試問所有農夫的獎金總額為何?

保證每個輸入的正整數不超過 100000。



範例輸入:
3
5
1 1 1
2 2 2
3 3 3
2 3 4
8 9 2
3
9 1 8
6 12 1
8 1 1
3
10 30 40
9 8 5
100 1000 70


範例輸出:
38
86
7445


解題思維:
令農場面積 = A 、 動物數量 = B 、 環保等級 = E,因此每隻動物的平均居住空間 × 環保等級 × 動物數量等同於
(A ÷ B) × E × B
其等價於
A × E
即動物數量不影響獎金金額。

所以把所有農夫的 A × E 之值加總即是所求。

而因為 A 、 E 最大可以到 100000,所以有機會會超過 C++ 等 int 能儲存之範圍,建議用 long long 型態。




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

創作回應

更多創作