Kazun の競プロ記録

競技プログラミングに関する様々な話題を執筆します.

AtCoder Beginner Contest 259 A問題 Growth Record

問題

atcoder.jp

提出解答

atcoder.jp

問題の概要

高橋君は現在  N 歳の誕生日であり, 身長は  T [cm] である. 高橋君の身長について次のことがわかっている.

  • 生まれたその日から  X 歳の誕生日までの間は年  D [cm] のペースで身長が伸びている.
  • それ以降は身長が伸びていない.

では, 高橋君の  M 歳の誕生日時点での身長は何 cm か?

制約

  •  0 \leq M \lt N \leq 100
  •  1 \leq X \leq N
  •  1 \leq T \leq 200
  •  1 \leq D \leq 100
  • 生まれた瞬間の高橋君の身長は 1 cm 以上である.

解法

問題文から,  M 歳の誕生日時点での身長も  T [cm] であり, そこから身長は変化していないので,  X \leq M ならば答えは  T [cm] である.

 M \leq X の場合, 高橋君は  X 歳まで毎年  D [cm] のペースで身長が伸びているので, 生まれた瞬間の身長  U [cm] は  U=T-XD である. 従って, この場合の  M 歳時点の身長は  (U+DM) [cm] である.

以上から, 求めるべき答えは

 \begin{cases} U+DM & (X \leq M) \\ T & (M \leq X) \end{cases}=U+D \min(X,M)

である.