😢 😢 😢
题意:第 i 步可以挑一个数字加 i ,问你最少多少步能让两个数字相等
假设刚开始两个数字相等,然后一个数字向前走了abs(b-a)步,由等差数列求和公式,这时候我们贪心的让另外一个数字走大于等于abs(b - a)的最小步数,然后如果两数相等必须满足走的步数之和%2=0(这里也可以反映为什么要大于abs(b-a),因为就算小于的时候%2=0,一开始的abs(b-a)是不可分配的,只能靠后来走的步数的重新分配使两数相等,然而如何分配的过程我们并不关心)
还有就是昨天真的好困QAQ。。。打的心态最崩的一场没跑了
void solve()
{
ll a, b;cin >> a >> b;
ll c = max(a, b) - min(a, b);
int i;
for (i = 0;; i++) if (c <= (i * (i + 1)) / 2) break;
ll m = (i * (i + 1)) / 2;
while ((m + c) % 2) i++,m = (i * (i + 1)) / 2;
cout << i << endl;
return;
}
int main()
{
//fast;
int t;cin >> t;
while (t--)
solve();
}