trang chủ / bài tập / numsubseq

Số xâu con "abc"

Đề bài

Mô tả

Cho một xâu s độ dài n chỉ gồm các chữ cái thường "a", "b", "c" và dấu hỏi "?".

Gọi k là số dấu hỏi trong s. Ta thay mỗi dấu hỏi bằng một trong ba chữ cái "a", "b" hoặc "c", qua đó thu được tất cả 3k xâu chỉ gồm các chữ "a", "b", "c".

Với mỗi xâu t, một xâu con "abc" là một bộ ba vị trí i<j<l sao cho ti= "a", tj= "b", tl= "c". Số xâu con "abc" của t là số bộ ba vị trí như vậy.

Hãy tính tổng số xâu con "abc" trên tất cả 3k xâu thu được. Vì kết quả có thể rất lớn, in ra kết quả theo modulo 109+7.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n: độ dài xâu s.
  • Dòng thứ hai chứa xâu s độ dài n gồm các ký tự "a", "b", "c" và "?".

Dữ liệu ra

  • In ra một số nguyên: tổng số xâu con "abc" trên tất cả các xâu thu được, theo modulo 109+7.

Ràng buộc

  • 3n200000

Ví dụ

Input Output Giải thích
6
ac?b?c
24 9 xâu thu được. Ví dụ acabac có 2 xâu con "abc", acabbc có 4, ... Tổng cộng là 24.
5
a???c
46 27 xâu; tổng số xâu con "abc" là 46.
9
cccbbbaaa
0 Không có dấu hỏi và không tồn tại vị trí i<j<l nào cho "abc" theo thứ tự, nên kết quả là 0.
3
???
1 Chỉ có xâu "abc" trong 27 xâu chứa đúng 1 xâu con "abc".

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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0