2012年10月14日日曜日

TopCoder SRM434 Div2 250Pts

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

コメントを投稿

フォロワー

ページビューの合計