公式
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(時間超過)になってしまいます。
しかし、この問題ではパターンが固定されているため、計算式で直接求めることができます。
アルゴリズム
- 入力から \(N\) と \(M\) を受け取る。
- 往復の時間 \(2(N - 1)\) にアラーム回数 \(M\) をかけて、合計時間を計算する。
- 結果を出力する。
これは単純な四則演算による計算で、ループなどを使う必要はありません。
計算量
- 時間計算量: \(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 によって生成されました。
投稿日時:
最終更新: