2012年4月19日木曜日

TopCoder SRM377 Div2 250Pts

このTopCoderの問題はアーカイブには存在していない。問題文についてざっくりと説明する。

1より大きいNが「ほとんど素数」というのは次の条件を満たすものとする。1)Nは素数ではない。2)1とそれ自身以外で割り切れる数字がある。3)Nを素因数分解するとすべて10より大きいものとなる。さて、引数のmより大きな「ほとんど素数」になる数のうち、最小になるものを返せ。

私の解答はこちら。

public class AlmostPrimeNumbers {

 public int getNext(int m) {
  for( int i=m+1 ; i<Integer.MAX_VALUE ; i++ ){
   int half = i/2 + 1;
   for( int j=2 ; j<half ; j++ ){
    if( j < 10 && i%j==0 ) break; // 2~9で割り切れたら失敗、次へ行く
    if( i%j == 0 ) return i; // 初めて割り切れるのが10より大きな数であればOK
   }
  }
  return 0;
 }

}

得点は105.49/250。1回のsubmitでシステムテストクリア。途中でアリーナが不調に陥り提出に35分ほどロスト...

0 件のコメント:

コメントを投稿

フォロワー

ブログ アーカイブ

ページビューの合計