与えられた数字nに対して、2つの与えられた数字(a、b)とnの倍数で形成できる次の最も近い数字の差を見つけます。2つの数字の倍数の和であるnの最も近い次の数字の検索
Example:
n = 49, (a, b) = (13, 17) => Difference = 2
Nearest number would be = 51 (3*17, 0*13)
n = 16, (a, b) = (2 , 5) => Difference = 0
Nearest number would be = 16 (2*5, 3*2)
n = 25, (a, b) = (13, 17) => Difference = 1
Nearest number would be = 26 (0*17, 2*13)
この問題はどうやって解決できますか?私が書いた何
は以下のとおりです(Rubyで)
def find_next_num_diff(x,y,z)
x, y = x > y ? [x, y] : [y, x]
while(z%y > 0 && z >= x) do
z -= x
end
if z%y == 0
return 0
else
return [y-(z%y), x-z].min
end
end
上記のコードは、例の最後の種類のために動作しません。
編集: 負の数値はありません。そして合計だけ。 は、最初に私は式のためX & Y
について解くと、この問題を考え、私はこのような何かを始めるでしょう
これが言語に依存しない場合は、すべての言語タグを削除する必要があります。そうでなければ、1つを選択します。 – yano
負の倍数は許されますか?すなわち、25 = 17 * 3-13 * 2 => n = 25、(a、b)=(13,17)=>差異= 0 –
「n」が整数であると考えると、常に「n」となる。または、あなたは質問の中のいくつかの情報を見逃しました。 – Olaf