Cho một biểu thức số học dạng S-expression (kiểu Lisp) chỉ gồm: số nguyên; toán tử hai ngôi +, -, *, /; toán tử so sánh >, <, = (trả về 1 nếu đúng, 0 nếu sai); và biểu thức điều kiện (if C A B) — trả về giá trị của A nếu C=0, ngược lại trả về giá trị của B. Biểu thức viết với ngoặc đơn theo tiền tố, các token cách nhau bởi khoảng trắng, ví dụ (+ 1 (* 2 3)). Phép chia / là phép chia lấy phần nguyên làm tròn về 0 (như phép chia số nguyên trong C/Python int(a/b)); đề đảm bảo mẫu số luôn khác 0.
Hãy thông dịch và tính giá trị nguyên của biểu thức.
Ví dụ: (if (> 3 2) (+ 1 2) (* 1 2)) — vì 3>2 đúng nên kết quả là giá trị của (+1 2)=3.
Một dòng duy nhất chứa một biểu thức S-expression hợp lệ (độ dài không quá 1000 ký tự). Biểu thức có thể chỉ là một số nguyên đơn (không có ngoặc).
In ra một số nguyên duy nhất — giá trị của biểu thức.
Ví dụ:
Đầu vào:
(+ 1 (* 2 3))
Đầu ra:
7
Đầu vào:
5
Đầu ra:
5
Đang tải editor...