このTopCoderの問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。問題文についておおまかに説明する。
リックは固くいくつかの数字に関係する魔法のパターンがあると信じている。この信念はそこらじゅうで奇妙なパターンを見つける彼の傾向の結果である。リックは最近いくつかの数字に"魔法の源"があると考えた。例えば、1370974という数字は、以下の手順により、1234に等しい魔法の源を持つ。これは1234+12340+123400+1234000=1370974という計算ができることによる。n個の数字の数列で、i番目の数字が1234に10^iをかけたものの総和が1370974になるものがあることから、公式に1234は1370974の魔法の源である。この定義により、正の整数はそれ自身の魔法の源でもあることに注意。さて、sourceとAという正の整数が与えられたとき、Aより大きく、sourceがxの魔法の源となるような最小の数を返せ。
私の解答はこちら。
public class ReverseMagicalSource { public int find(int source, int A) { int num = source; int i = 1; while( true ){ if( num > A ) break; num += source * Math.pow(10, i); i++; } return num; } }
特に注意点はなし。言われた通りに書くだけですね。強いて言うなら、最小の数を判定するときに、Aより大きくの場所でうっかり=をつけないぐらいですが...
0 件のコメント:
コメントを投稿