D.表达式求值 (栈&后缀表达式)

题目传送门

思路:裸题,唯一需要注意的是会爆long,long 要一边取模一边操作。

AC代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod=1e4;
int main(){
    stack<ll>s;
    ll a,ans=0;
    scanf("%lld",&a);
    s.push(a%mod);
    char ch;
    while((ch=getchar())!='\n'){
        scanf("%lld",&a);
        if(ch=='+'){
            s.push(a);
        }
        else {
             ll b=s.top();s.pop();
             s.push((b%mod)*(a%mod));
        }
    }
    while(s.size()){
        ans=(ans+s.top())%mod;
        s.pop();
    }
    printf("%lld\n",ans%mod);
    return 0;
}