😢 😢 😢
題意:第 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();
}