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