Chương trình Unary
Đề bài
Mô tả
Brainfuck là một ngôn ngữ lập trình chỉ gồm 8 lệnh: +, -, [, ], <, >, . và , (ý nghĩa của các lệnh không quan trọng trong bài này).
Unary là một phương ngữ tối giản của Brainfuck, trong đó mọi chương trình chỉ được viết bằng một loại ký tự duy nhất. Một chương trình Brainfuck được chuyển sang Unary theo ba bước:
- Thay mỗi lệnh bằng mã nhị phân 4 bit tương ứng theo bảng:
| Lệnh | Mã |
|---|---|
> |
1000 |
< |
1001 |
+ |
1010 |
- |
1011 |
. |
1100 |
, |
1101 |
[ |
1110 |
] |
1111 |
Nối các mã nhị phân lại theo đúng thứ tự các lệnh trong chương trình, thu được một số nhị phân duy nhất.
Viết số đó trong hệ đếm cơ số một (unary): số được viết bằng cách lặp lại chữ số 1 đúng lần. Chuỗi thu được chính là chương trình Unary tương đương.
Cho một chương trình Brainfuck, hãy tính độ dài của chương trình Unary tương đương, in ra theo modulo (tức ).
Dữ liệu vào
Một dòng duy nhất chứa xâu mô tả chương trình Brainfuck.
Dữ liệu ra
Một số nguyên duy nhất: độ dài của chương trình Unary tương đương, lấy modulo .
Ràng buộc
- Mỗi ký tự của là một trong 8 lệnh
+,-,[,],<,>,.,,
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| ,. | 220 | Hai lệnh cho mã 1101 và 1100. Nối lại được 11011100, tức 220 trong hệ thập phân. Chương trình Unary tương đương gồm 220 ký tự. |
| ++++[>,.<-] | 61425 | Số nhị phân thu được dài 44 bit, giá trị của nó chia dư 61425. |
Bình luận