1 条题解
-
0
【例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