2011年8月11日木曜日

TopCoder SRM215 Div2 250Pts

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

numberが与えられたときに、numberは何回各桁の数で割り切れたかを返すメソッドを作成せよ。ただし、0は割れないとする。例えば12345という整数が与えられたら、12345は1、3、5で割り切れるので、3(回)という数値が返ってくる。

私の解答は以下の通り。

public class DivisorDigits {
 public int howMany(int number) {
  int divisible = 0;
  int target = number;
  while( target > 0 ){
   int divisor = target % 10;
   if( divisor != 0 && number % divisor == 0 ) divisible++;
   target /= 10;
  }
  return divisible;
 }
}

得点は239.87/250、全回答者の中央値は約233点。if文はdivisor!=0を先に書くことがポイント。順番を逆にすると、0割を起こして例外が投げられてしまうのである。

0 件のコメント:

コメントを投稿

フォロワー

ブログ アーカイブ

ページビューの合計