今回の問題はこちら(要TopCoder登録 & 問題文は英語)。
次に問題を説明する。2回異なる距離を走って得られた距離と時刻の組から、3回目に2回の中間に相当する距離を走った場合に、走りきるのにかかる時刻を予測したい。予測の計算式はすでに与えられているので、フォーマットに従ってかかる時刻を出力せよという問題である。私の解答は以下の通り。
public class RaceApproximator { public String timeToBeat(int d1, int t1, int d2, int t2, int raceDistance) { int takenSeconds = (int)(t1*Math.exp( Math.log((double)t2/t1)* Math.log((double)d1/raceDistance)/Math.log((double)d1/d2) )); int hours = takenSeconds/3600; int minutes = (takenSeconds-hours*3600)/60; int seconds = takenSeconds-hours*3600-minutes*60; return String.format("%d:%02d:%02d", hours,minutes,seconds); } }
得点は132.63/250。C言語のsprintfに相当するのがString.formatであるということを学んだ。低得点に終わった理由はMath.exp()で囲む範囲を間違えてしまったことで、勿体ないことをした。
0 件のコメント:
コメントを投稿