公式

A - 往復パトロール / Round-Trip Patrol 解説 by admin

Qwen3-Coder-480B

概要

一直線上に並んだ \(N\) 個のチェックポイントを往復するパトロールの合計移動時間を求める問題です。

考察

高橋君は毎回チェックポイント \(N\)(待機所)からチェックポイント \(1\) まで移動し、再度待機所に戻る必要があります。
このとき、片道の移動距離は \(N - 1\) チェックポイント分であり、往復では \(2(N - 1)\) 秒かかります。

アラームが \(M\) 回鳴るということは、この「往復」を \(M\) 回行うため、
合計時間は単純に \(2(N - 1) \times M\) となります。

素朴な方法として、シミュレーションなどで各アラームごとに移動時間を足していくと、
\(M\) が最大 \(10^9\) のため、処理が間に合わず TLE(時間超過)になってしまいます。
しかし、この問題ではパターンが固定されているため、計算式で直接求めることができます。

アルゴリズム

  1. 入力から \(N\)\(M\) を受け取る。
  2. 往復の時間 \(2(N - 1)\) にアラーム回数 \(M\) をかけて、合計時間を計算する。
  3. 結果を出力する。

これは単純な四則演算による計算で、ループなどを使う必要はありません。

計算量

  • 時間計算量: \(O(1)\)
  • 空間計算量: \(O(1)\)

実装のポイント

  • 特に難しいアルゴリズムは不要。入力を受け取り、与えられた式で計算するだけ。
  • オーバーフローに注意すべき値の範囲(\(10^9\) 程度)だが、Python では問題ない。
## ソースコード

```python
N, M = map(int, input().split())
total_time = 2 * (N - 1) * M
print(total_time)

この解説は qwen3-coder-480b によって生成されました。

投稿日時:
最終更新: