Official
A - エアコンの温度調整 / Air Conditioner Temperature Adjustment Editorial by admin
Qwen3-Coder-480B概要
各部屋の温度が \(37\) 度以下になるように、必要に応じてエアコンで冷却する操作を行う。\(1\) 回の操作で \(0.1\) 度下げられるとき、全室を快適にするのに必要な操作回数の総和を求めよ。
考察
この問題では、各部屋の温度 \(T_i\) が \(37.0\) を超えていれば、その差分を \(0.1\) で割った回数だけエアコンを動かす必要があります。
例えば、部屋の温度が \(37.5\) 度であれば、\(37.5 - 37.0 = 0.5\) 度下げればよく、\(0.5 / 0.1 = 5\) 回の操作が必要です。
しかし、浮動小数点数の計算には誤差が生じることがあります。たとえば、Python で 0.5 / 0.1 を計算しても 4.999999999999999 のような結果になることがあります。このような誤差により、本来の操作回数よりも \(1\) 少ない値になってしまう危険があります。
これを回避するために、計算結果に非常に小さな値(例えば \(10^{-9}\))を足してから整数に変換するテクニックを使います。これにより、正しい回数を取得できます。
また、この問題は各部屋を独立に処理すればよいので、複雑なアルゴリズムは不要です。全室について温度差を確認し、必要な操作回数を足し合わせるだけで解けます。
アルゴリズム
- 各部屋の温度 \(T_i\) を読み込む。
- 各温度について以下を行う:
- もし \(T_i > 37.0\) なら、
- 温度超過分:\( \text{excess} = T_i - 37.0 \)
- 必要操作回数:\( \text{operations} = \left\lfloor \frac{\text{excess}}{0.1} + 10^{-9} \right\rfloor \)
- 合計に加算する。
- もし \(T_i > 37.0\) なら、
- 合計操作回数を出力する。
計算量
- 時間計算量: \(O(N)\)
- 空間計算量: \(O(N)\)
実装のポイント
- 浮動小数点数の除算による誤差を避けるために、微小な値(例: \(10^{-9}\))を加える工夫が必要。
- 各部屋の温度はすでに小数第1位まで与えられているため、直接比較や減算が可能。
## ソースコード
```python
n = int(input())
t = list(map(float, input().split()))
total_operations = 0
for temp in t:
if temp > 37.0:
excess = temp - 37.0
operations = int(excess / 0.1 + 1e-9) # Avoid floating point error
total_operations += operations
print(total_operations)
この解説は qwen3-coder-480b によって生成されました。
posted:
last update: