ABC013-B - 錠 を解く
ABC013-B - 錠
押すと数字が1増える赤いボタンと
押すと数字が1減る青いボタン
数字aを数字bにするためにはそれぞれ何回押すか、という問題
なんだ、|a-b| で楽勝だな!
…いや、何か補足があるぞ
> 9 のときに赤いボタンを押すと 0 になり、ディスプレイの表示が 0 のときに青いボタンを押すと 9 になります。
…なるほど
これを踏まえると |a-b| が最適とは限らないな…
例えば、a=9, b=3 の場合、|a-b|=6 だが
正解は 9 → 0 → 1 → 2 → 3 の計4回が正解になる
これって 9 → 10 →11 →12 →13 と考えると 9 → 3 は 9 → 13 に実質等しいとわかる
これなら 13-9=4(10+3-9=4) で答えが求められる
以上を踏まえると
|a-b| と (10+a)-b と (10+b)-a のうち一番小さいものを出力すればよさそうだ
提出したコード
# 入力 a=int(input()) b=int(input()) # 出力 print(min(abs(a-b),10+a-b,10+b-a))