Educational Codeforces Round 78 (Rated for Div. 2) B - A and B(思維)


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM