Ngôn Ngữ COWBASIC
Nộp bài giải
Điểm:
1,00 (OI)
Giới hạn thời gian:
2.0s
Python 3
5.0s
Giới hạn bộ nhớ:
256M
Đầu vào:
stdin
Đầu ra:
stdout
Tác giả:
Dạng bài
Ngôn ngữ cho phép
C++, Go, Java, Kotlin, Pascal, Python, Scratch
Bạn được cho một chương trình viết bằng ngôn ngữ lập trình đơn giản COWBASIC. Hãy thực thi chương trình và in ra giá trị của biến được trả về. Tất cả phép tính đều thực hiện theo modulo .
Ngôn ngữ COWBASIC có các cấu trúc sau:
Gán biến:
<tên_biến> = <biểu_thức>
Vòng lặp MOO (lặp đúng n lần):
n MOO {
<các câu lệnh>
}
Trả về kết quả (luôn là câu lệnh cuối cùng):
RETURN <tên_biến>
Biểu thức có thể là:
- Một số nguyên dương (literal)
- Một tên biến (chuỗi chữ thường, độ dài )
- Tổng hai biểu thức:
( <biểu_thức> ) + ( <biểu_thức> )
Biến chưa được khởi tạo có giá trị . Biến chỉ được sử dụng sau khi đã được định nghĩa.
Dữ liệu vào
Một chương trình COWBASIC gồm tối đa dòng, mỗi dòng tối đa ký tự.
Dữ liệu ra
Một số nguyên duy nhất — giá trị trả về của chương trình theo modulo .
Ràng buộc
- Số dòng
- Mỗi dòng ký tự
- Số vòng lặp (literal trong MOO)
- Tên biến gồm tối đa chữ cái thường
- Các vòng lặp có thể lồng nhau tùy ý
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| x = 1 10 MOO { x = ( x ) + ( x ) } RETURN x |
1024 | Biến x được nhân đôi 10 lần: . |
| n = 1 nsq = 1 100000 MOO { 100000 MOO { nsq = ( nsq ) + ( ( n ) + ( ( n ) + ( 1 ) ) ) n = ( n ) + ( 1 ) } } RETURN nsq |
4761 | Vòng lặp lồng nhau tính . |
Ghi chú
Vì số lần lặp có thể rất lớn (lên đến ) và các vòng lặp có thể lồng nhau nhiều cấp, cần sử dụng thuật toán hiệu quả — không thể mô phỏng trực tiếp.
Bình luận