AcWing 454. 表达式求值
原题链接
中等
作者:
HiCode_001
,
2019-11-06 21:00:00
,
所有人可见
,
阅读 893
题意分析:
计算表达式的值,其中包含加号和乘号,结果取后四位
考察知识点:
栈
思路分析:
将数字存到栈里面去,当遇到的事加号时,则后面的数字继续入栈;若遇到的是乘号,则栈顶元素出栈,与后一个元素相乘,结果再入栈。最后将栈中所有元素相加即可;
#include <iostream>
#include <stack>
using namespace std;
stack<int> st;
const int M = 10000;
int main(){
int a;
char op;
cin >> a;
st.push(a%M);//第一个数字入栈
while(cin>>op>>a){
if(op=='*'){
int t = st.top();//取出栈顶元素
st.pop();//栈顶元素出栈
st.push(a*t%M);//栈顶元素和后一个数字相乘,入栈
}else{
st.push(a%M);
}
}
int ans = 0;
while(st.size()>0){
ans +=st.top()%M;
st.pop();
}
cout << ans%M;
return 0;
}
大佬请问这样读入为什么没问题