比赛 防止浮躁的小练习v0.8 评测结果 AWWWWWWWWW
题目名称 表达式求值 最终得分 10
用户昵称 ciyou 运行时间 0.182 s
代码语言 C++ 内存使用 0.28 MiB
提交时间 2016-10-28 11:24:30
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<stack>
using namespace std;
stack<int> proc;
stack<int> temp;
int state=0;
//1-Multiply 2-Add 0-Normal
int readch(char&);
int main(){
    freopen("expr2013.in","r",stdin);
    freopen("expr2013.out","w",stdout);
    char tem;
    int mark;
    while((mark=readch(tem))!=-1){
        if(mark==0){
            int now;
            if(!temp.empty()){
                now=temp.top();
                temp.pop();
            }
            else now=0;
            now=(now*10)%10000+int(tem-'0');
            temp.push(now);
        }else if(mark==1){
            if(state==1){
                int x,y;
                x=proc.top();
                proc.pop();
                y=temp.top();
                temp.pop();
                int res=(x*y)%10000;
                proc.push(res);
                state=0;
            }else{
                proc.push(temp.top());
                temp.pop();
            }
        }else if(mark==2){
            state=1;
            proc.push(temp.top());
            temp.pop();
        }
    }
    if(state==1){
        int x,y;
        x=proc.top();
        proc.pop();
        y=temp.top();
        temp.pop();
        int res=(x*y)%10000;
        proc.push(res);
        state=0;
    }else{
        proc.push(temp.top());
        temp.pop();
    }
    int ans=0;
    while(!proc.empty()){
        ans+=proc.top();
        ans%=10000;
        proc.pop();
    }
    cout<<ans;
    fclose(stdin);
    fclose(stdout);
}
int readch(char& aim){
    char temp;
    scanf("%c",&temp);
    if((temp>='0'&&temp<='9')){
        aim=temp;
        return 0;
    }
    if(temp=='+'){
        aim=temp;
        return 1;
    }
    if(temp=='*'){
        aim=temp;
        return 2;
    }
    else return -1;
}