题目描述
给定两个整数 \(a, b\)(可能为负),你可以进行任意多次操作(也可以不操作),每次操作你需要在如下两种形式中进行选择:
- 操作 1:将 \(a\) 赋值为 \(a\) 与 \(b\) 的和,即 \(a \gets a + b\)。
- 操作 2:将 \(b\) 赋值为 \(a\) 与 \(b\) 的和,即 \(b \gets a + b\)。
你的目标是最小化 \(a\) 与 \(b\) 的差的绝对值 \(\lvert a-b \rvert\),请输出最小值。
分类讨论
当 \(a,b≥1\) 时,显然答案为
\[\begin{cases}
\min(a-b,b) & a>b\\
\min(b-a,a) & \text{otherwise}
\end{cases}
\]
当 \([a=0]+[b=0]>0\) 时,答案为 \(0\)。
当 \(a,b<0\) 时,如果执行任意操作,可以证明答案永远不会更小,此时答案为\(|a-b|\)。
当 \(a\times b<0\) 时,手模几组样例会发现每次让绝对值大的加上绝对值小的,其过程类似于辗转相除法,最后必然得到 \(0\)。
Ac Code
浙公网安备 33010602011771号