Edit

【pythonでABC161を解説】C - Replacing Integer

問題概要

問題ページ

C - Replacing Integer
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()

-Edit