trang chủ / đề bài / dhbb23_ctb_10_c

Dãy ngoặc

Đề bài

Mô tả

Một dãy ngoặc hợp lệ là một xâu chỉ gồm các ký tự ngoặc mở và ngoặc đóng, được định nghĩa như sau:

  1. Xâu rỗng là một dãy ngoặc hợp lệ;
  2. Nếu S là một dãy ngoặc hợp lệ thì (S), [S] và {S} cũng là các dãy ngoặc hợp lệ;
  3. Nếu A và B là hai dãy ngoặc hợp lệ thì xâu ghép AB cũng là một dãy ngoặc hợp lệ.

Sau khi làm xong một số bài toán về dãy ngoặc, An đã viết một dãy ngoặc hợp lệ ra tờ giấy trên bàn học của mình rồi chạy đi chơi với đám bạn. Trong lúc An không có nhà, Bình, cậu em trai hiếu động của An, đã lấy tờ giấy ra nghịch ngợm và làm dính mực vào một vài ký tự trong dãy. Mỗi ký tự bị lem mực được biểu diễn bởi ký tự '?'. Khi trở về nhà, An không trách em khi biết được điều gì đã xảy ra. Bất chợt trong đầu cậu lóe lên một câu hỏi: có bao nhiêu cách để tạo ra một dãy ngoặc hợp lệ bằng cách thay thế những ký tự bị lem mực?

Mỗi ký tự '?' có thể được thay thế bởi một trong sáu ký tự ngoặc '(', ')', '[', ']', '{', '}'. Hai cách thay thế được coi là khác nhau nếu có ít nhất một vị trí '?' được thay bởi hai ký tự khác nhau.

Yêu cầu: Hãy đếm số cách thay thế các ký tự '?' để thu được một dãy ngoặc hợp lệ. Vì kết quả có thể rất lớn, bạn chỉ cần in ra 5 chữ số cuối của kết quả, tức là phần dư của kết quả khi chia cho 105 (in như một số nguyên bình thường, không thêm chữ số 0 ở đầu).

Dữ liệu vào

  • Dòng đầu tiên chứa số nguyên dương N là độ dài của dãy ngoặc.
  • Dòng thứ hai chứa một xâu độ dài N, chỉ gồm các ký tự '(', ')', '[', ']', '{', '}' và '?' ('?' là ký tự bị lem mực).

Dữ liệu đảm bảo xâu được tạo ra từ một dãy ngoặc hợp lệ (mà An đã viết) bằng cách thay một số ký tự bởi '?', nên luôn có ít nhất một cách thay thế.

Dữ liệu ra

In ra một số nguyên là phần dư khi chia số cách thay thế để thu được dãy ngoặc hợp lệ cho 105.

Ràng buộc

  • 2≤N≤200.
  • Có 40% số test ứng với 40% số điểm có N≤50 và số ký tự '?' nhỏ hơn 10.
  • 60% số test còn lại ứng với 60% số điểm có 2≤N≤200.

Ví dụ

Input Output Giải thích
8
[{????)]
10 Có 10 cách: [{()}()], [{[]}()], [{{}}()], [{}(())], [{}()()], [{}([])], [{}({})], [{}], [{}][()] và [{}{}()].
24
{[????[??????]})????????
15106
24
????????????????????????
5292 Số cách thật sự là 110546105292, 5 chữ số cuối là 05292, in ra 5292.

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.402 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.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0