1 条题解
-
0
【深基6.例4】口算练习题
解题思路
每题先读一个字符串。如果是 a、b、c 就更新运算类型,再读两数;否则该字符串是第一个运算数,沿用上一题类型。计算后拼接完整表达式,输出字符串长度。
正确性说明
输入两种形式被首字符是否为运算类型准确区分;类型状态保留使省略类型的题沿用前题。拼接字符串包含数字、运算符、等号和可能的负号,长度即要求值。
易错点
减法可能为负,负号也计入长度;第一题保证给出类型。
复杂度
每题表达式长为 L,总时间 O(iL),额外空间 O(L)。
参考代码(C++11)
#include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n; cin >> n; char op = 'a'; while (n--) { string t; cin >> t; long long a, b; if (t == "a" || t == "b" || t == "c") { op = t[0]; cin >> a >> b; } else { a = stoll(t); cin >> b; } char sign = op == 'a' ? '+' : op == 'b' ? '-' : '*'; long long r = op == 'a' ? a + b : op == 'b' ? a - b : a * b; string expr = to_string(a) + sign + to_string(b) + "=" + to_string(r); cout << expr << "\n" << expr.size() << "\n"; } return 0; }
- 1