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