P1981 表达式求值

P1981 表达式求值

题解

这个题联想一下  P1310 表达式的值

 思路就是输入中缀式,转成后缀式,然后按后缀式计算,完美!!
 
 
 
but!!
会严重RE,因为你可能会输入中缀式的时候输入非常的长,然后你还要开栈,开后缀式数组,还要转化,严重RE
 
 
 
What about 一边输入一边处理??
How??
首先你一定会输入一个数字(因为这是中缀表达)
如果下一个输入运算符的话,一定要再输入一个数字,然后模拟处理一下就好了
 
 
这道题的关键就是如何一边输入一边处理
 

 

代码

#include<bits/stdc++.h>

using namespace std;

const int mod=1e4;

int x,y,k,ans=0;
char fu;

int main()
{
    cin>>x;
    x=x%mod;
    while(cin>>fu)
    {
        if(fu=='\n') break;
        cin>>y;
        y=y%mod;
        if(fu=='+')
        {
            ans=(ans%mod+x%mod)%mod;
            x=y;
        }
          
        if(fu=='*')
        {
            x=x%mod*y%mod;
        }

    }
    
    ans=(ans%mod+x%mod)%mod;
    
    printf("%d",ans);

    return 0;
}

 

posted @ 2019-06-18 08:41  晔子  阅读(454)  评论(0编辑  收藏  举报