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; }