任意の整数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)」を比較して小さい方になります。