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:
- Xâu rỗng là một dãy ngoặc hợp lệ;
- Nếu 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ệ;
- Nếu và là hai dãy ngoặc hợp lệ thì xâu ghép 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 chữ số cuối của kết quả, tức là phần dư của kết quả khi chia cho (in như một số nguyên bình thường, không thêm chữ số ở đầu).
Dữ liệu vào
- Dòng đầu tiên chứa số nguyên dương là độ dài của dãy ngoặc.
- Dòng thứ hai chứa một xâu độ dài , 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 .
Ràng buộc
- .
- Có số test ứng với số điểm có và số ký tự '?' nhỏ hơn .
- số test còn lại ứng với số điểm có .
Bình luận