このTopCoderの問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。
numという数値が与えられる。numに対し、小さい方の二桁の数を置き換えて、factorで割り切れるようにする。置き換えた結果の数はできるだけ小さくしたい。置き換えた数値を(2桁の)文字列として返せ。例えば、num=275とfactor=5であれば、"00"が回答になる。小さい二桁の数を00から99まで順に検討していくと、候補となる値の最小値200は5で割り切れるからである。
私の解答はこちら。
public class DivToZero {
public String lastTwo(int num, int factor) {
int n = num - num % 100;
int res = 0;
for( int i=0 ; i<100 ; i++ ){
int val = i+n;
if( val % factor == 0){
res = i;
break;
}
}
return String.format("%02d",res);
}
}得点は240.22/250。C言語を使っていたのが長いせいか、ついフォーマット整形関数にsprintfを探してしまうワタシ。
0 件のコメント:
コメントを投稿