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=='
') 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;
}
原文地址:https://www.cnblogs.com/xiaoyezi-wink/p/11043323.html