【ABC161 C】「Replacing Integer」を解く【Python3】

abc161c

「AtCoder」解説一覧へ

任意の整数xに対して、「xをxとKの差の絶対値で置き換える」という操作を好きな回数分した場合、とりうる最小値Nを求める問題です。

提出
n, k = map(int, input().split())

ans = min(k-(n%k), n%k)

print(ans)

「n≧k」の場合、「n = n-k」の計算をすることになり、これを「n<k」になるまで続けると「n = n%k」になります。

例えば、「n = 17, k = 4」の場合は「n = 1」となり、「n = 14, k = 3」の場合は「n = 2」になります。

前者の「n = 17, k = 4」の場合、1と4の差の絶対値が「3」になり、そのあとの絶対値 |n-k| は1と3が交互に現れます。

そのため、最小値は1である「n%k」となりますが、後者の「n = 14, k = 3」の場合、「n%k」が最小ではなく、「k-(n%k)」が最小になります。

よって、答えは「n%k」と「k-(n%k)」を比較して小さい方になります。

【ABC161】解説記事リスト

「AtCoder」解説一覧に戻る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です