2011年4月16日土曜日

TopCoder SRM165 Div2 250Pts

Eclipse Coderを導入して2日目、以前より速い作業ができるようになったかも。

本日解いた問題を日本語にするとこんな感じ。

1971年までのイギリスの通貨は1シリング=12ペニー、1ポンド=20シリングであった。ペニーの数が与えられたときに、それは何シリング、何ポンド、何ペニーに変換されるか計算し、この順で返せ。ただし、できるだけペニーを多くし、次にポンドをできるだけ多くするものとする。

例えば533ペニーであれば、2ポンド4シリング5ペニーとなる。また入力となるペニーの値は0から10000とする。

public class BritishCoins {
 public int[] coins(int pence) {
  int[] ret = new int[3];
  ret[0] = pence/240;
  pence -= ret[0]*240;
  ret[1] = pence/12;
  pence -= ret[1]*12;
  ret[2] = pence;
  return ret;
 }

}

得点は244.16/250。上から30%ぐらいの位置であった。かなり速いかなとおもっていたけど、簡単な問題だったせいか、皆コーディングが速かった。この問題はOne-linerに書けるようだ。上のretのように無駄に変数を使っていないから、コードが分かりやすい。

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

0 件のコメント:

コメントを投稿

フォロワー

ページビューの合計