trang chủ / bài tập / catchovf

Bắt lỗi tràn số

Đề bài

Mô tả

Cho một hàm f 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 x. Biến x là số nguyên, có thể nhận giá trị từ 0 đến 2321.

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 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 1 vào x.

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 x bị tràn: tức là sau một lệnh add nào đó, giá trị của x vượt quá 2321.

Bạn chạy f(0) (khởi đầu x=0). 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 x sau khi chạy xong.

Dữ liệu vào

  • Dòng đầu chứa một số nguyên l — số dòng của hàm.
  • l 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 f(0); ngược lại in ra giá trị của x.

Ràng buộc

  • 1l105
  • 1n100 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 1 lần. Lệnh add thứ hai nằm trong hai vòng lặp 1015 nên chạy 150 lần. Lệnh add cuối nằm trong vòng lặp 10 nên chạy 10 lần. Tổng: 1+150+10=161.
2
for 62
end
0 Không có lệnh add nào, nên x giữ nguyên giá trị 0.
11
for 100
for 100
for 100
for 100
for 100
add
end
end
end
end
end
OVERFLOW!!! Lệnh add chạy 1005=1010 lần, vượt 2321 nên x bị tràn.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0