今日の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 件のコメント:
コメントを投稿