Kazun の競プロ記録

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

AtCoder Beginner Contest 278 B問題 Misjudge the Time

問題

atcoder.jp

提出解答

atcoder.jp

問題の概要

 24 時制で表示されるデジタル時計がある. この時計は  AB:CD 分のとき,  A,B,C,D がそれぞれ左上, 左下, 右上, 右下に表示される.

このとき, 時計の表示の右上と左下を入れ替えた時刻が24時制として成立する時, その時刻は見間違えやすい時刻という.

 H M 分を含めてそれ以降に来る最初に訪れる見間違えやすい時刻を求めよ.

制約

  •  0 \leq H \leq 23
  •  0 \leq M \leq 59

解法

 AB CD 分が見間違えやすい時刻であるための必要十分条件 0 \leq 10A+C \leq 23 かつ  0 \leq 10B+D \leq 59 である.

このとき,  h m 分に対応する  A,B,C,D はそれぞれ

 A=\left \lfloor \dfrac{h}{10} \right \rfloor, \quad B=h \pmod{10}, \quad C=\left \lfloor \dfrac{m}{10} \right \rfloor, \quad D=m \pmod{10}

である.

これにより,  h m 分が見間違えやすい時刻かどうかを判定できた.

後は  H M 分から1分ごとに見間違えやすい時刻かどうかを判定していき, 最初に見間違えやすい時刻になった時刻を出力すればよい.

なお, 24時制の表示は  24 \times 60=1440 通りに限られること, 及び問題文にあるように  20 13 分が見間違えやすい時刻であるから, 最悪 1440 回の比較で解答を求めることが出来る.

1分ごとに送る際,  59 分と  23 時の次にそれぞれ注意すること.