Bắt lỗi tràn số
Đề bài
Mô tả
Cho một hàm viết bằng một ngôn ngữ giả đơn giản. Hàm nhận vào một số nguyên và ghi ngay vào biến . Biến là số nguyên, có thể nhận giá trị từ đến .
Thân hàm gồm các lệnh thuộc ba loại:
- for n — mở đầu một vòng lặp; mọi lệnh nằm giữa lệnh for n này và lệnh end tương ứng sẽ được thực hiện lần.
- end — kết thúc vòng lặp for gần nhất chưa được đóng.
- add — cộng thêm vào .
Mỗi lệnh for n luôn được ghép với đúng một lệnh end, nên cấu trúc lồng nhau của các vòng lặp luôn hợp lệ. Một lệnh for n có thể được theo ngay bởi end (vòng lặp rỗng). Lệnh add có thể nằm ngoài mọi vòng lặp.
Lưu ý rằng các lệnh add có thể làm bị tràn: tức là sau một lệnh add nào đó, giá trị của vượt quá .
Bạn chạy (khởi đầu ). Hãy xác định giá trị trả về có còn đúng hay không, hoặc đã bị tràn.
Nếu trong quá trình chạy xảy ra tràn, hãy in ra OVERFLOW!!!. Ngược lại, in ra giá trị của sau khi chạy xong.
Dữ liệu vào
- Dòng đầu chứa một số nguyên — số dòng của hàm.
- dòng tiếp theo, mỗi dòng chứa một lệnh thuộc một trong ba loại: for n, end, hoặc add.
Dữ liệu ra
In ra OVERFLOW!!! nếu xảy ra tràn trong khi chạy ; ngược lại in ra giá trị của .
Ràng buộc
- trong mỗi lệnh for n.
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 9 add for 43 end for 10 for 15 add end add end |
161 | Lệnh add đầu tiên chạy lần. Lệnh add thứ hai nằm trong hai vòng lặp và nên chạy lần. Lệnh add cuối nằm trong vòng lặp nên chạy lần. Tổng: . |
| 2 for 62 end |
0 | Không có lệnh add nào, nên giữ nguyên giá trị . |
| 11 for 100 for 100 for 100 for 100 for 100 add end end end end end |
OVERFLOW!!! | Lệnh add chạy lần, vượt nên bị tràn. |
Bình luận