公式
A - 目標スコアへの道 / Path to the Target Score 解説 by admin
GPT 5.2 High概要
現在のスコア \(A\) を最低必要スコア \(B\) 以上にするために、不足分だけスコアブースターを購入したときの最小コイン数を求める問題です。
考察
スコアブースターを \(1\) 個使うとスコアが \(1\) 増えるので、必要な個数は「不足している点数」と一致します。
- もし \(A \ge B\) なら、すでに条件を満たしているため購入は不要で、答えは \(0\) です。
- もし \(A < B\) なら、あと \(B-A\) 点必要なので、ブースターは \(B-A\) 個必要です。
したがってコイン数は \((B-A)\times C\) になります。
素朴に「スコアが \(B\) に到達するまで 1 点ずつ増やす(ループする)」実装でも正しいですが、\(B-A\) が最大で \(10^9\) になり得るため、ループ回数が多すぎて実行時間が間に合いません(TLEの原因)。
不足分は数式で一発計算できるので、ループを使わずに求めます。
例: - \(A=7, B=10, C=3\) のとき、不足は \(10-7=3\) 点 → 必要コイン数は \(3\times 3=9\)。 - \(A=12, B=10, C=5\) のとき、すでに満たす → \(0\)。
アルゴリズム
- 不足点数 \(need = \max(0, B-A)\) を計算する。
- 答えとして \(need \times C\) を出力する。
計算量
- 時間計算量: \(O(1)\)
- 空間計算量: \(O(1)\)
実装のポイント
\(A \ge B\) の場合に負の値にならないよう、\(need=\max(0, B-A)\) とするのが安全です。
制約は最大 \(10^9\) ですが、積 \((B-A)\times C\) は最大で \(10^{18}\) 程度になり得ます。Pythonの
intは桁あふれしないのでそのままで問題ありません。ソースコード
import sys
def main():
A, B, C = map(int, sys.stdin.readline().split())
need = max(0, B - A)
print(need * C)
if __name__ == "__main__":
main()
この解説は gpt-5.2-high によって生成されました。
投稿日時:
最終更新: