2011年8月20日土曜日

TopCoder SRM232 Div2 250Pts

このTopCoderの問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。それでは、問題について説明する。

1971年以前は、イギリスの通貨システムはシャルルマーニュの時代からのものが利用されていた。通貨の種類はペニー、シリング、ポンドであった。12ペニーが1シリング、20シリングが1ポンドということになっていた。penceというペニーの数が与えられたときに、ポンドをできるだけ多く、次にシリングをできるだけ多くし、それぞれが何枚ずつに変換されるかをint型の配列にして返すメソッドを作成せよ。配列の中身は、penceを変換した結果得られる順にポンド、シリング、ペニーの数である。

例えば500ペンスは2ポンド、1シリング、8ペニーになる。2*12*20+1*12+8=500という関係になっている。

私の解答は以下の通り。

public class BritishCoins {
 public int[] coins(int pence) {
  return new int[]{pence/240,(pence-pence/240*240)/12,pence%12};
 }
}

得点は248.45/250、中央値は約236点。初めてのワンライナーです。240で割って240を掛けるというコードは気味が悪いです。

0 件のコメント:

コメントを投稿

フォロワー

ブログ アーカイブ

ページビューの合計