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

Phân Tách Moo

Đề bài

Mô tả

Xâu S được tạo bằng cách nối L bản sao của xâu T (độ dài N). Mỗi ký tự của T là 'M' hoặc 'O'.

Một dãy con Moo là một dãy vị trí tăng dần trong S gồm đúng K+1 vị trí: vị trí đầu tiên chứa ký tự 'M', K vị trí còn lại đều chứa ký tự 'O'. Nói cách khác, các ký tự tại các vị trí đó ghép lại tạo thành xâu dạng "MOO...O" với đúng K chữ 'O'.

Đếm số cách phân tách S thành các dãy con Moo, tức số cách chia toàn bộ N·L vị trí của S thành các nhóm rời nhau, mỗi nhóm là một dãy con Moo. Hai cách phân tách được coi là khác nhau nếu tồn tại hai vị trí cùng nhóm trong cách này nhưng khác nhóm trong cách kia. In kết quả modulo 109+7.

Dữ liệu vào

  • Dòng 1: Ba số nguyên K, N, L.
  • Dòng 2: Xâu T độ dài N chỉ chứa 'M' và 'O'.

Dữ liệu ra

Một số nguyên duy nhất: số cách phân tách modulo 109+7. Nếu không có cách nào, in ra 0.

Ràng buộc

  • 1K106
  • 1N106
  • 1L1018

Ví dụ

Input Output Giải thích
2 6 1
MOOMOO
1 S = MOOMOO. Chỉ có một cách: mỗi chữ 'M' lấy hai chữ 'O' ngay sau nó. Nếu chữ 'M' đầu lấy một chữ 'O' ở nửa sau thì chữ 'M' thứ hai không đủ hai chữ 'O' đứng sau.
2 6 1
MMOOOO
6 Hai chữ 'M' đứng trước cả bốn chữ 'O'. Chọn hai trong bốn chữ 'O' cho chữ 'M' thứ nhất, hai chữ còn lại thuộc chữ 'M' thứ hai: (42)=6 cách.
1 4 2
MMOO
4 S = MMOOMMOO. Mỗi nửa có 2 cách ghép độc lập nên tổng cộng 2×2=4 cách.
1 4 100
MMOO
976371285 Mỗi bản sao đóng góp 2 cách độc lập, kết quả là 2100mod(109+7).

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.400 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.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 julia 1.12.7 kotlinc 2.4.10 lean 4.33.1 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.3.3 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0