1 条题解

  • 0
    @ 2026-8-19 9:50:33

    题解

    使用 stack<long long>。

    遇到数字直接入栈。遇到运算符时:

    b = top(); pop();
    a = top(); pop();
    

    注意减法必须计算 a-b,不能写反。

    计算结果重新入栈,最后栈中只剩答案。

    时间复杂度 O(n)O(n)。

    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
    
        int n;
        cin >> n;
        stack<long long> st;
    
        while (n--) {
            string t;
            cin >> t;
            if (t=="+" || t=="-" || t=="*") {
                long long b=st.top(); st.pop();
                long long a=st.top(); st.pop();
                if (t=="+") st.push(a+b);
                else if (t=="-") st.push(a-b);
                else st.push(a*b);
            } else {
                st.push(stoll(t));
            }
        }
    
        cout << st.top() << '\n';
        return 0;
    }
    
    • 1

    信息

    ID
    5159
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者