1 条题解

  • 0
    @ 2035-6-2 8:01:12

    【例30.2】回家作业

    解题思路

    先检查三个相邻差是否相等。若相等,第五项为 d+(d-c);否则按等比关系求第五项 d×d/c。全零数列自然作为等差处理。

    正确性说明

    按上述推导执行:每次仅处理当前输入或当前步骤,并把它对答案的贡献计入对应状态。所有需要处理的情况均被覆盖,结束时保存的量就是题目所求。

    易错点

    先判等差以免全零时发生除零;输出原四项和第五项。

    复杂度

    t 组时间 O(t),空间 O(1)。

    参考代码(C++11)

    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
        int t;
        cin >> t;
        while (t--) {
            long long a, b, c, d, e;
            cin >> a >> b >> c >> d;
            if (b - a == c - b && c - b == d - c)
                e = d + d - c;
            else
                e = d * d / c;
            cout << a << " " << b << " " << c << " " << d << " " << e << "\n";
        }
        return 0;
    }
    
    • 1

    信息

    ID
    207
    时间
    1000ms
    内存
    64MiB
    难度
    进阶
    标签
    递交数
    0
    已通过
    0
    上传者