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}\))を足してから整数に変換するテクニックを使います。これにより、正しい回数を取得できます。

また、この問題は各部屋を独立に処理すればよいので、複雑なアルゴリズムは不要です。全室について温度差を確認し、必要な操作回数を足し合わせるだけで解けます。

アルゴリズム

  1. 各部屋の温度 \(T_i\) を読み込む。
  2. 各温度について以下を行う:
    • もし \(T_i > 37.0\) なら、
      • 温度超過分:\( \text{excess} = T_i - 37.0 \)
      • 必要操作回数:\( \text{operations} = \left\lfloor \frac{\text{excess}}{0.1} + 10^{-9} \right\rfloor \)
      • 合計に加算する。
  3. 合計操作回数を出力する。

計算量

  • 時間計算量: \(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: