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