2011年8月14日日曜日

TopCoder SRM220 Div2 250Pts

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

うまれた年(born)から現在の年(year)まで、何回のうるう年を迎えたかを求めるメソッドを作成せよ。ただし、bornがうるう年の場合はそれをカウントせず、yearがうるう年の場合はそれをカウントするようにせよ。

私の解答は以下の通り。

public class LeapAge {
 public int getAge(int year, int born) {
  int nLeap = 0;
  for( int i=born+1 ; i<=year ; i++ ){
   if( i % 100 == 0 && i % 400 == 0 ){
    nLeap++;
   }else if( i % 100 == 0 ){
    continue;
   }else if( i % 4 == 0 ){
    nLeap++;
   }
  }
  return nLeap;
 }
}

得点は237.55/250、中央値は約225点。うるう年の問題はFizzBuzzにならぶベタな問題ですよね。

0 件のコメント:

コメントを投稿

フォロワー

ブログ アーカイブ

ページビューの合計