题目链接
思路
一道结论题。
由于一次可以从一个杯子往另外一个杯子里倒 c c c 克水,也就是说一个杯子 + c +c +c 一个杯子 − c -c −c,相差 2 c 2c 2c。
然而可以倒比 c c c 小的克数,所以我们得出一下结论:
{ 0 if a = b 1 if c > a n s ⌈ ∣ a ∣ ÷ 2 ⋅ c ⌉ else \begin{cases}0 & \text{ if } a=b \\1 & \text{ if } c>ans \\\lceil \lvert a\rvert\div 2\cdot c\rceil & \text{ else }\end{cases} ⎩ ⎨ ⎧01⌈∣a∣÷2⋅c⌉ if a=b if c>ans else
代码
#include <bits/stdc++.h>
using namespace std;
int t;
int main() {
cin >> t;
while (t--) {
int a, b, c;
cin >> a >> b >> c;
int ans = abs(a - b);
if (a == b) {
cout << 0 << endl;
continue;
}
if (c >= ans) {
cout << 1 << endl;
continue;
}
int cc = c * 2;
cout << ceil(1.0 * ans / cc) << endl;
}
return 0;
}