N
歳の誕生日T
cmだった
- 0 ~
X
歳まで毎年D
cm伸びた
X
~ N
歳まで変化はなかった
M
歳の誕生日、彼の身長が何cmだったか
図解するとわかりやすい
問題の解き方
M歳はいつか?
- 0 <= M <= X 歳の時
- 身長が伸びている時期に当たる
- M歳の時の身長 = 今の身長 - ( M歳からX歳までの間に伸びた身長 )
- X <= M <= N 歳の時
- M歳の時の身長 = X ~ N歳の間は身長が伸びていないので T cm
Python3でプログラミングする
構成
- 入力系を作る
- 処理系を作る
- 出力系を作る
1. 入力系を作る
今回作成した入力系
n, m, x, t, d = list(map(input().split()))
詳しい説明
input([prompt])
で標準入力をstrオブジェクトとして受け取る
str.split()
でstrオブジェクトをスペース区切りに分割してiteratorオブジェクトにする
map(func, interator, ...)
でiteratorオブジェクトの全ての要素にfunctionを適用してiteratorオブジェクトを返す
list(iterator)
で受け取ったiteratorオブジェクトをlistオブジェクトにする(コンストラクタ)
- Pythonの代入文の仕様で複数ターゲットに代入する
2. 処理系
- [問題の解き方]で書いたことをif, elseで書く
if x <= m:
ans = t
else:
ans = t - d*(x-m)
3. 出力系
print(ans)
解答
# input
n, m, x, t, d = list(map(int, input().split()))
# calc
if x <= m:
ans = t
else:
ans = t - d*(x-m)
# output
print(ans)
感想
- macのterminalでpythonを起動するとdefaultでpython2が起動することを忘れていた
- 小学3年生レベルの計算式の構築が暗算でできないのが悲しかったので記事にして図を書きました。反省。
使ったメソッドの紹介
input([prompt])
str.split(sep=None, maxsplit=- 1)
map(function, iterable, ...)
class list([iterable])