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