2012年6月9日土曜日

TopCoder SRM395 Div2 250Pts

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

あなたは平方数のみからなる数字を使った作業を楽しんでいる。そのような数列は0, 1, 4, 9, 10, 11, 14...となる。この数列のn番目の要素を返すメソッドを作成せよ。先頭の0は0番目の要素とする。

私の解答はこちら。

public class SquareDigitNumbers {

 public int getNumber(int n) {
  int count = 0;
  int number = 0;
  while( true ){
   boolean isSquare = true;
   String snum = "" + number;
   for( int i=0 ; i<snum.length() ; i++ ){
    if( snum.charAt(i) != '0' && snum.charAt(i) != '1' &&
     snum.charAt(i) != '4' && snum.charAt(i) != '9' ){
     isSquare = false;
     break;
    }
   }
   if( isSquare ){
    count++;
   }
   if( count > n ) break;
   number++;
  }
  return number;
 }

}

得点は206.68/250、1回のsubmitでシステムテストクリア。中央値は約190点。0, 1, 4, 9のみからなる数字というのを判別するロジックが重要ですね。

0 件のコメント:

コメントを投稿

フォロワー

ブログ アーカイブ

ページビューの合計