1 条题解

  • 0
    @ 2023-07-03 13:53:29

    题解

    模拟,每次把三个数中的最小数 \(x\) 以最大数 \(z\) 为中点进行跳跃,变为 \(2z-x\),更新最大值并计算次数即可。

    示例代码

    #include <bits/stdc++.h>
    #define mod 998244353
    using namespace std;
    using ll = long long int;
     
    void solve()
    {
        int a, b, c, d, N;
        cin >> a >> b >> c >> N;
        int count = 0;
        while(1)
        {
            count++;
            int x, y, z;
            x = a;
            y = b;
            z = c;
            x = 2 * z - x;
            a = y;
            b = z;
            c = x;
            if(c >= N) break;
        }
        cout << count << endl;
    }
     
    int main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0), cout.tie(0);
        int T = 1; cin >> T;
        while (T--) solve();
        return 0;
    }
    
  • 1

信息

ID
1423
难度
1
分类
(无)
标签
(无)
递交数
46
已通过
36
通过率
78%
上传者