2012年10月4日木曜日

TopCoder SRM431 Div2 250Pts

このTopCoderの問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。問題文についておおまかに説明する。

ある正の整数がmega cool numberであるというのは、その桁が等差数列を形成しているときにそう呼ばれる。Nを与えたとき、1以上N以下の間の整数でmega cool numberとなる整数の数を返せ。

例えば123は初項1、公差1の等差数列なのでmega cool numberになることを意味している。

私の解答はこちら。

public class MegaCoolNumbersEasy {

 public int count(int N) {
  if( N<=99 ) return N;
  int n = 99;
  for( int i=100 ; i<=N ; i++ ){
   String nstr = "" + i;
   int diff = nstr.charAt(0) - nstr.charAt(1);
   boolean isCool = true;
   for( int j=1 ; j<nstr.length()-1 ; j++ ){
    if( nstr.charAt(j) - nstr.charAt(j+1) != diff ){
     isCool = false;
     break;
    }
   }
   if( isCool ) n++;
  }
  return n;
 }

}

得点は216.90/250、1回のsubmitでシステムテストクリア。問題文を理解する方が実装よりも時間がかかっています。

0 件のコメント:

コメントを投稿

フォロワー

ページビューの合計