Cho một xâu kí tự \(s\) chứa các kí tự "a", "b", "c", và "?".
Gọi số lượng kí tự "?" trong xâu \(s\) là \(k\). Mỗi dấu "?" trong xâu ta có thể thay thế bằng \(1\) trong \(3\) kí tự "a", "b", "c". Như vậy, có thể tạo ra \(3^k\) xâu chỉ chứa các kí tự "a", "b", "c". Ví dụ, xâu \(s\) = "ac?b?c" ta có thể tạo ra được \(9\) xâu ["acabac", "acabbc", "acabcc", "acbbac", "acbbbc", "acbbcc", "accbac", "accbbc", "accbcc"].
Yêu cầu: Đếm tất cả các xâu con "abc" xuất hiện trong tất cả các xâu có thể tạo ra. In ra kết quả theo modulo \(10^9 + 7\).
Nhắc lại: Xâu con là xâu có thể thu được bằng cách xóa các kí tự ở một số các vị trí trong xâu. Xâu con của xâu "abc" là: ["", "a", "b", "c", "ab", "ac", "bc", "abc"].
Input
Dòng đầu tiên là số nguyên dương \(n\) - độ dài xâu \(s\).
Dòng thứ hai là xâu \(s\) chỉ chứa các kí tự "a", "b", "c", "?".
Output
Kết quả bài toán.
Example
Test 1
Input
6
ac?b?c
Output
24
Note
Trong ví dụ đầu tiên, ta có thể tạo ra 9 xâu:
"acabac" --- có 2 xâu con "abc",
"acabbc" --- có 4 xâu con "abc",
"acabcc" --- có 4 xâu con "abc",
"acbbac" --- có 2 xâu con "abc",
"acbbbc" --- có 3 xâu con "abc",
"acbbcc" --- có 4 xâu con "abc",
"accbac" --- có 1 xâu con "abc",
"accbbc" --- có 2 xâu con "abc",
"accbcc" --- có 2 xâu con "abc".
Vậy, có tất cả 2+4+4+2+3+4+1+2+2=24 xâu con "abc".
Scoring
\(20\%\) số test có \(n \leq 10\).
\(20\%\) số test có \(n \leq 50\).
\(20\%\) số test có \(n \leq 1000\).
\(20\%\) số test đảm bảo xâu \(s\) không có kí tự "?" nào.
\(20\%\) số test cos \(n \leq 200000\).
Bình luận
Đăng nhập để bình luận
Chưa có bình luận nào.