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