#include <iostream> #include <stack> #include <cstring> using namespace std; int getVal(char x) { if (x == '*' || x == '/') return 3; else if (x == '+' || x == '-') return 2; else if (x == '$') return 1; else return 0; } double compute(double a, double b, char op) { double res=0; if (op == '*') res = a*b; else if (op == '/') res = a/b; else if (op == '+') res = a+b; else if (op == '-') res = a-b; return res; } int main() { stack<double> nums; stack<int> op; op.push('#'); string s; while (cin >> s) { s += '$'; int i = 0; int n = s.size(); while (i < n) {//当没有匹配到末尾时 float res = 0; if (s[i] >= '0' && s[i] <= '9') { while (s[i] >= '0' && s[i] <= '9') { res = res * 10 + s[i] - '0'; i++; }nums.push(res); }else{ if(getVal(op.top())<getVal(s[i])) { op.push(s[i]); i++; } else{ char o=op.top(); op.pop(); double num2=nums.top(); nums.pop(); double num1=nums.top(); nums.pop(); num1=compute(num1,num2,o); nums.push(num1); } } } cout<<nums.top()<<endl; } return 0; } // 64 位输出请用 printf("%lld")