USACO 2025 - Moo Decomposition
Xem PDFBạn có một xâu dài \(S\) gồm các ký tự M và O, cùng một số nguyên \(K\geq 1\). Hãy đếm số cách phân tách \(S\) thành các dãy con sao cho mỗi dãy con có dạng MOOOO....O với đúng \(K\) ký tự O, lấy modulo \(10^9+7\).
Vì xâu rất dài nên bạn không được cung cấp nó một cách tường minh. Thay vào đó, bạn được cho một số nguyên \(L\) (\(1\leq L\leq 10^{18}\)) và một xâu \(T\) độ dài \(N\) (\(1\leq N\leq 10^6\)). Xâu \(S\) là phép nối của \(L\) bản sao của xâu \(T\).
Dữ liệu vào
Dòng đầu tiên chứa \(K\), \(N\) và \(L\).
Dòng thứ hai chứa xâu \(T\) độ dài \(N\). Mỗi ký tự là M hoặc O.
Đảm bảo số cách phân tách \(S\) khác không.
Dữ liệu ra
In ra số cách phân tách xâu \(S\), lấy modulo \(10^9+7\).
Ví dụ
Ví dụ 1
Input
2 6 1
MOOMOO
Output
1
Giải thích
Cách duy nhất để phân tách \(S\) thành các MOO là cho ba ký tự đầu tiên tạo thành một MOO và ba ký tự cuối cùng tạo thành một MOO khác.
Ví dụ 2
Input
2 6 1
MMOOOO
Output
6
Giải thích
Có sáu cách khác nhau để phân tách xâu thành các dãy con (chữ hoa tạo thành một MOO, chữ thường tạo thành MOO còn lại):
- MmOOoo
- MmOoOo
- MmOooO
- MmoOOo
- MmoOoO
- MmooOO
Ví dụ 3
Input
1 4 2
MMOO
Output
4
Ví dụ 4
Input
1 4 100
MMOO
Output
976371285
Giải thích
Hãy nhớ lấy đáp án modulo \(10^9+7\).
Phân nhóm
- Dữ liệu 5–7: \(K=1\), \(L=1\).
- Dữ liệu 8–10: \(K=2\), \(N\leq 1000\), \(L=1\).
- Dữ liệu 11–13: \(K=1\).
- Dữ liệu 14–19: \(L=1\).
- Dữ liệu 20–25: Không có ràng buộc bổ sung.
Đề bài: Dhruv Rohatgi.
Nguồn
USACO 2025 US Open Contest, Gold — Moo Decomposition: https://usaco.org/index.php?page=viewproblem2&cpid=1521
Kỳ thi:
- USACO 2025 - US Open - Hạng Vàng (1 Tháng tư, 2025)
Bình luận