条件1
条件2
条件1,2を満たす最小のを求める問題です。
を決めると、条件2から となります。(ceilは小数点以下を切り上げる関数)
の最小値を問われているので、 の最小値だけを考えて を調べればよいです。
また、は入れ替えても条件は変わらないため、の範囲で調べれば十分です。
を 1から まで変えて、 が 以上 以下であれば をこれまでの最小値と比較して、小さければ最小値を更新します。
コード例 (Julia)
function solve() # 入力 readInts() = parse.(Int,split(readline())) readInt() = parse(Int,readline()) N,M = readInts() ans = -1 for i = 1:N if i * i > M break end k = cld(M,i) if k > N || k < i continue end p = k * i if ans == -1 || p <= ans ans = p end end println(ans) end # function solve # main solve()