問題概要
問題ページ
-
C - Replacing Integer
問題ページへ移動する
問題文
青木君は任意の整数 \(x\) に対し、以下の操作を行うことができます。
操作: \(x\) を \(x\) と \(K\) の差の絶対値で置き換える。
整数 \(N\) の初期値が与えられます。この整数に上記の操作を \(0\) 回以上好きな回数行った時にとりうる \(N\) の最小値を求めてください。
制約
- \(0 ≤ N ≤ 10^{18}\)
- \(1 ≤ K ≤ 10^{18}\)
- 入力は全て整数
問題の考察
ACコード
import sys
def solve():
readline = sys.stdin.buffer.readline
mod = 10 ** 9 + 7
n, k = list(map(int, readline().split()))
n = divmod(n, k)[1]
print(min(n, abs(n - k)))
if __name__ == '__main__':
solve()