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: +, -, [, ], <, >, ., (ý 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:

  1. Thay mỗi lệnh bằng mã nhị phân 4 bit tương ứng theo bảng:
Lệnh
> 1000
< 1001
+ 1010
- 1011
. 1100
, 1101
[ 1110
] 1111
  1. 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.

  2. Viết số đó trong hệ đếm cơ số một (unary): số n được viết bằng cách lặp lại chữ số 1 đúng n 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 1000003 (tức 106+3).

Dữ liệu vào

Một dòng duy nhất chứa xâu p 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 1000003.

Ràng buộc

  • 1|p|100
  • Mỗi ký tự của p 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 1000003 dư 61425.

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.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.400 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 julia 1.12.7 kotlinc 2.4.10 lean 4.33.1 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.3.3 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0