Cho một biểu thức số học viết dưới dạng hậu tố (Reverse Polish Notation - RPN), trong đó các toán hạng là số nguyên và các toán tử là +, -, *, /. Hãy viết một trình thông dịch (interpreter) sử dụng ngăn xếp (stack) để tính giá trị của biểu thức — đây là kỹ thuật kinh điển để thực thi mã trung gian dạng hậu tố trong một trình biên dịch.
Duyệt các token từ trái sang phải theo đúng thứ tự xuất hiện:
- ở đầu để chỉ số âm), đẩy nó vào ngăn xếp.Phép chia / là phép chia lấy phần nguyên làm tròn về 0 (ví dụ 7/2=3, −7/2=−3). Dữ liệu vào đảm bảo không có phép chia cho 0, biểu thức luôn hợp lệ (đủ toán hạng cho mọi toán tử) và sau khi xử lý hết token, ngăn xếp chỉ còn đúng một giá trị — đó là kết quả cần in ra.
Dòng đầu tiên chứa số nguyên T (1≤T≤100) — số biểu thức. Mỗi dòng trong T dòng tiếp theo là một biểu thức RPN, gồm các token cách nhau bởi đúng một khoảng trắng.
In ra T dòng, mỗi dòng là kết quả (số nguyên) của biểu thức tương ứng theo đúng thứ tự.
Ví dụ:
Input:
3
3 4 + 2 *
5 1 2 + 4 * + 3 -
6 2 /
Output:
14
14
3
Ví dụ:
Đầu vào:
1
3 4 + 2 *
Đầu ra:
14
Đầu vào:
1
5 1 2 + 4 * + 3 -
Đầu ra:
14
Đang tải editor...