Official

A - 目標スコアへの道 / Path to the Target Score Editorial by admin

Qwen3-Coder-480B

概要

高橋君が現在のスコアから目標スコアに到達するために必要な最小コイン数を求める問題。

考察

この問題では、現在のスコア \(A\) がすでに目標スコア \(B\) 以上であれば、何もする必要がないため、必要なコイン数は \(0\) です。

そうでない場合、必要なスコアの増加分は \(B - A\) 点です。各スコアブースターは1点分のスコアを増やすことができ、1個につき \(C\) コインかかります。したがって、必要なコイン数は単純に \((B - A) \times C\) となります。

この問題は非常にシンプルであり、ループや再帰などの複雑な処理は不要です。また、制約が最大 \(10^9\) まであるため、愚直に1つずつスコアを増やしていくような処理を行うと、時間的に間に合いません(TLE)。しかし、乗算一つで結果が求められるので、効率的に解くことができます。

例えば、\(A = 100\), \(B = 120\), \(C = 5\) の場合: - 必要なポイント: \(120 - 100 = 20\) - 必要なコイン: \(20 \times 5 = 100\)

アルゴリズム

  1. 現在のスコア \(A\) が目標スコア \(B\) 以上なら、答えは \(0\)
  2. そうでなければ、不足しているスコア \(B - A\) を計算。
  3. そのスコア分を補うために必要なコイン数は \((B - A) \times C\)

計算量

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

実装のポイント

  • 入力を正しく受け取ること。

  • 条件分岐で既に条件を満たしている場合を忘れずに処理すること。

  • 乗算の順序に注意し、オーバーフローがないよう確認(Pythonでは気にしなくてよい)。

    ソースコード

A, B, C = map(int, input().split())

if A >= B:
    print(0)
else:
    needed_points = B - A
    total_coins = needed_points * C
    print(total_coins)

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

posted:
last update: