#aBC255C. [ABC255C] ±1 Operation 1

[ABC255C] ±1 Operation 1

AT_abc255_c [ABC255C] ±1 Operation 1

题目描述

给定一个整数 XX。对 XX 进行如下操作称为“一次操作”:

  • 从以下两种操作中任选一种并执行:
    • XX11
    • XX11

对于首项为 AA,公差为 DD,项数为 NN 的等差数列 SS,我们称 SS 中的数为“好数”。 你可以对 XX 进行 00 次或多次操作,使其变为“好数”。请你求出所需操作的最小次数。

输入格式

输入为一行,包含四个整数:

X A D NX\ A\ D\ N

输出格式

输出一个整数,表示所需的最小操作次数。

输入输出样例 #1

输入 #1

6 2 3 3

输出 #1

1

输入输出样例 #2

输入 #2

0 0 0 1

输出 #2

0

输入输出样例 #3

输入 #3

998244353 -10 -20 30

输出 #3

998244363

输入输出样例 #4

输入 #4

-555555555555555555 -1000000000000000000 1000000 1000000000000

输出 #4

444445

说明/提示

限制条件

  • 所有输入均为整数。
  • 1018X,A1018-10^{18} \leq X, A \leq 10^{18}
  • 106D106-10^6 \leq D \leq 10^6
  • 1N10121 \leq N \leq 10^{12}

样例解释 1

由于 A=2,D=3,N=3A=2, D=3, N=3,等差数列 S=(2,5,8)S=(2,5,8)。要将 X=6X=6 变为“好数”,只需对 XX 执行一次减 11 操作即可。无法通过 00 次操作使 XX 成为“好数”。

样例解释 2

D=0D=0 的情况也是可能的。此外,也可能不需要进行任何操作。

由 ChatGPT 4.1 翻译