このTopCoderの問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。問題文についておおまかに説明する。
5つの正の整数が与えられたとき、least majority multipleというのは、5つの与えられた数のうち、3つ以上で割り切れる最小の正の整数を指す。a, b, c, d, eという5つの異なる値を取る正の整数が与えられたとき、least majority multipleを返すメソッドを作成せよ。
私の解答はこちら。
public class LeastMajorityMultiple {
public int leastMajorityMultiple(int a, int b, int c, int d, int e) {
int num = 1;
while( true ){
int divisible = 0;
if( num % a == 0 ) divisible++;
if( num % b == 0 ) divisible++;
if( num % c == 0 ) divisible++;
if( num % d == 0 ) divisible++;
if( num % e == 0 ) divisible++;
if( divisible >= 3) return num;
num++;
}
}
}
1から順にカウントしていけばよいだけなので、工夫の余地はあまりないかな。しいて言うなら、5つの整数がすべて値が異なるという条件から、必ず返す値は3以上になるので、num = 3から探索を開始すればよいのではと思います。

0 件のコメント:
コメントを投稿