1 条题解

  • 0
    @ 1983-5-10 13:14:18

    【深基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

    信息

    ID
    103
    时间
    1000ms
    内存
    512MiB
    难度
    进阶
    标签
    递交数
    1
    已通过
    1
    上传者