このTopCoderの問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。問題文についておおまかに説明する。
トムは小さな男の子で、おもちゃを集めるのが好きである。誕生日にお母さんはトムにおもちゃの兵隊が入った箱をプレゼントとして買った。箱にはn人の兵隊がいて、1からnまで制服に書かれている。数字の先頭に0はついていないものとする。トムは兵隊を数えはじめるが、すべてを数えるのは難しいと気づいた。トムはラベル長がlowerBoundからupperBoundまでの兵隊だけを数えることにした。トムが数える兵隊の数を返せ。
私の解答はこちら。
public class SoldierLabeling { public int count(int n, int lowerBound, int upperBound) { int from = (int)Math.pow(10, lowerBound-1); int to = (int)Math.pow(10, upperBound)-1; to = Math.min(n, to); int num = to-from+1>=0 ? to - from + 1 : 0; return num; } }
得点は243.23/250、1回のsubmitでシステムテストクリア。ラベル長なので10の何乗まで扱うかということになる。
0 件のコメント:
コメントを投稿