Thông thường trong các biểu thức toán học, ta viết toán tử ở giữa hai toán hạng, ví dụ: ~a + b, a * b,....~ Đó gọi là ký pháp trung tố. Khi một biểu thức có nhiều phép toán, ta dùng các cặp dấu ngoặc (
, )
và thứ tự ưu tiên các phép toán để chỉ rõ thứ tự thực hiện các phép toán ấy.
Ngoài ký pháp trung tố, người ta còn có cách viết toán tử nằm sau hai toán hạng, được gọi là ký pháp hậu tố. Chẳng hạn:
~a + b~ viết là ~a b +~;
~a * b~ viết là ~a b *~ ;
~a * (b + c)~ viết là ~a b c + *~;
~(a + b) / (c * (d - e))~ viết là ~a b + c d e - * /~;
...
Trong ký pháp hậu tố, để tính giá trị biểu thức, ta lần lượt thực hiện các phép tính mà tại đó trước toán tử có hai toán hạng nằm liền kề, lưu giữ kết quả tính được để sau này thực hiện các phép tính tiếp theo. Ví dụ: ~2 3 + 4 5 6 + - * = 5 4 11 - * = 5 -7 * = -35~
Yêu cầu
Cho trước một biểu thức số học được viết dưới dạng ký pháp hậu tố. Hãy tính giá trị của biểu thức ấy.
Dữ liệu vào
Gồm một dòng duy nhất là xâu ~S~ thể hiện biểu thức số học cần tính giá trị (giữa các toán tử và toán hạng viết cách nhau một dấu cách). Biết rằng biểu thức có thể chứa các toán tử +, -, *, /
Kết quả ra
Gồm một dòng duy nhất là giá trị của biểu thức tìm được (viết dưới dạng số thực lấy ~3~ chữ số thập phân).
Sample Input
2 3 + 4 5 6 + - *
Sample Output
-35.000
Comments