2003/Contest/ソウル大会

Problem B : Clock

問題概要

時刻が hh:mm (00 <= hh <= 23 ,00 <= mm <= 59) の形式で5つ与えられる。

アナログ時計で長針と短針がなす角(0度以上180度以下の方)の大きさの小さいもの順(同じ角度ならば、早い時間が先に来る)でソートし3番目のものを出力。。

難易度

やや易。

解法

12時の方向と長針のなす角(時計回り): mm * (360/60) (度)
12時の方向と短針のなす角(時計回り): (hh % 12) * (360/12) + mm * 360/12/60 (度)

(上の2つの差) mod 180 が長針と短針がなす角。

この後は例えば [求まった角度] * 24 * 60 + hh * 60 + mmをキーにしてソートすればよいだろう。

議論・その他

  • 360/12/60 が0.5になるので、一周を720とする単位を使用した。javaでcompareToを書くときに返り値がintなのでこの方がちょっとだけ便利だった。(谷口)

ファイルを添付する

[添付ファイル一覧] [全ページの添付ファイル一覧]
アップロード可能最大ファイルサイズは 10,240KB です。

管理者パスワード:

Last-modified: 2009-11-06 (金) 13:26:46 (3243d)