Xóa xâu con

Đề bài

Mô tả

Cho một xâu s độ dài n chỉ gồm các chữ cái Latin thường.

Một xâu con liền kề là một dãy các ký tự liên tiếp của xâu. Bạn cần xóa đúng một xâu con liền kề (một đoạn liên tiếp, khác rỗng) khỏi s sao cho tất cả các ký tự còn lại đều giống nhau (số ký tự phân biệt còn lại bằng 0 hoặc 1).

Hãy đếm số cách xóa như vậy.

Lưu ý:

  • Bạn phải xóa ít nhất một ký tự.
  • Được phép xóa toàn bộ xâu (khi đó phần còn lại rỗng, cũng được tính là hợp lệ).
  • Hai cách xóa được coi là khác nhau nếu vị trí đầu hoặc vị trí cuối của đoạn bị xóa khác nhau.

Dữ liệu đảm bảo trong s có ít nhất hai ký tự phân biệt.

Vì kết quả có thể lớn, hãy in ra phần dư của nó khi chia cho 998244353.

Dữ liệu vào

  • Dòng đầu chứa một số nguyên n — độ dài xâu s.
  • Dòng thứ hai chứa xâu s gồm n chữ cái Latin thường.

Dữ liệu ra

  • In ra một số nguyên là số cách xóa (lấy phần dư cho 998244353).

Ràng buộc

  • 2n2·105
  • Xâu s có ít nhất hai ký tự phân biệt.

Ví dụ

Input Output Giải thích
4
abaa
6 Có thể xóa các đoạn (theo chỉ số 1): [1;2], [1;3], [1;4], [2;2], [2;3], [2;4].
7
aacdeee
6 Xóa để chỉ còn toàn ký tự a ở đầu hoặc toàn ký tự e ở cuối: [1;4], [1;5], [1;6], [1;7], [2;7], [3;7].
2
az
3 Có thể xóa [1;1], [1;2], [2;2].

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 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