题目描述
In a postfix expression, operators follow their operands. For example, [ 5 2 * ] is interpreted as 5 * 2. If there are multiple operators, each operator appears after its last operand. Here are more examples, showing how postfix compares to parenthesized expressions:
6 3+5∗2− 等同 ( ( 6 + 3 ) ∗ 5 ) – 2 )
4 3 2∗+ 等同 4 + ( 3 ∗ 2 )
These examples show that the operand affected by an operator can be the result of a previous calculation.
Here is what you need to do: Given an integer postfix expression, you must calculate and print its value.
输入
Each input will consist of a single test case. Your program will be run multiple times on different inputs.
A single input line will contain a postfix expression containing single digit integers and operators from the following set: { +, –, /, * } (add, subtract, divide, multiply). There will be a single space between each digit and and operator. The line will contain no more than 64 operators and numbers, total.
输出
Output will be a single integer on a line by itself.
样例输入 Copy
【样例1】 6 3 + 5 * 2 – 【样例2】 6 3 + 5 2 * * 【样例3】 4 3 2 * +
样例输出 Copy
【样例1】 43 【样例2】 90 【样例3】 10
stack<ll> st; int main() { char c; while(cin >> c) { if(isdigit(c)){ st.push(c - '0'); }else{ ll a = st.top(); st.pop(); ll b = st.top(); st.pop(); if(c == '+') st.push(a + b); else if(c == '-') st.push(b - a); else if(c == '*') st.push(a * b); else st.push(b / a); } } cout << st.top() << endl; return 0; } /** **/