Official

A - 証明書の交付 / Issuing Certificates Editorial by admin

swe-2-high

問題の概要

証明書を \(N\) 枚交付してもらうには \(1\) 枚 \(A\) 円かかるので、合計で \(N \times A\) 円必要です。所持金 \(B\) 円で全額払えるかを判定します。

アルゴリズム

  1. 整数 \(N, A, B\) を読み込む。
  2. \(N \times A \leq B\) なら Yes を、そうでなければ No を出力する。

これだけです。ループも配列も不要で、掛け算 1 回と比較 1 回で判定できます。

正しさの証明

主張: プログラムは、高橋君が \(N\) 枚すべての手数料を払えるとき、かつそのときのみ Yes を出力する。

証明: 証明書 \(1\) 枚の手数料は \(A\) 円であり、枚数は \(N\) 枚なので、支払い総額は \(N \times A\) 円です。「払える」ことの定義は、所持金が支払い総額以上であること、すなわち \(N \times A \leq B\) です。

  • \(N \times A \leq B\) のとき: 所持金は総額以上なので払えます。プログラムはこの条件が真のとき Yes を出力するので正しい。
  • \(N \times A > B\) のとき: 所持金が総額に満たないので払えません。プログラムは No を出力するので正しい。

この 2 つの場合は排他的かつすべての入力を網羅するので、任意の有効な入力に対して正しい出力が得られます。また、制約より \(N \times A \leq 100 \times 1000 = 10^5\) であり、32 ビット整数でオーバーフローしません。

計算量

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