JSUTC202004 A
さて,今日はAtCoderの負荷テストがありましたね。今回はA~Dまでの比較的簡単めな内容とchokudaiさんがTwitterでつぶやいておられましたが,C問題で少し躓いてDまで解ききれませんでした。(笑)
結構ショックですが,とりあえず早速解説していきます。
https://atcoder.jp/contests/judge-update-202004/tasks/judge_update_202004_a
A – Walking Takahashi
実行時間制限: 2 sec / メモリ制限: 1024 MB
配点 : 100 点
問題文
数直線上で生活している高橋君は、いま座標 S にいます。座標が L 以上 R 以下の区間は日当たりが良いです。
日に当たりたい高橋君は座標が L 以上 R 以下になるまで次のような移動を繰り返します。
- 現在の座標を X として、L≤X≤R のとき移動をやめる。X が L 未満のとき、X+1 に移動する。X が R より大きいとき、X−1 に移動する。
高橋君が最終的に移動をやめる座標を求めてください。
制約
- −100≤S≤100
- −100≤L≤R≤100
- 入力は全て整数である
入力
入力は以下の形式で標準入力から与えられる。
S L R
出力
高橋君が最終的に移動をやめる座標を出力せよ。
解説
今回の座標の変化は,
- L≤S≤R の時,もともと範囲内なので移動しない
- S<L の時,1ずつ増えていって最終的に L に到達した時点で移動をやめる
- R<S の時,1ずつ減っていって最終的に R に到達した時点で移動をやめる
この3パターンしかありませんよね。
なので,それぞれ場合分けして丁寧に出力すればいいわけです。
解答
s,l,r = map(int, input().split())
if s >= l and s <= r:
print(s)
elif s < l:
print(l)
else:
print(r)