Ngôn ngữ Reberland
Đề bài
Mô tả
Trong một ngôn ngữ, các từ được cấu tạo theo quy tắc sau. Đầu tiên chọn một "gốc" (root) là một xâu có độ dài lớn hơn 4 (tức ít nhất 5 ký tự). Sau đó nối liên tiếp vào phía sau gốc một số xâu, mỗi xâu có độ dài 2 hoặc 3 ký tự. Ràng buộc duy nhất: không được nối hai xâu giống hệt nhau ngay liền kề nhau. Tất cả các xâu được nối thêm này được gọi là các hậu tố của từ.
Cho một xâu . Hãy tìm tất cả các xâu phân biệt có độ dài 2 hoặc 3 mà có thể là một hậu tố của theo quy tắc cấu tạo từ ở trên.
Hai xâu được coi là phân biệt nếu chúng có độ dài khác nhau, hoặc tồn tại một vị trí mà ký tự tương ứng của chúng khác nhau.
Dữ liệu vào
Một dòng duy nhất chứa xâu gồm các chữ cái Latin thường.
Dữ liệu ra
Dòng đầu in ra số nguyên : số lượng hậu tố phân biệt có thể có.
Trên dòng tiếp theo, in ra các hậu tố này theo thứ tự từ điển (bảng chữ cái).
Ràng buộc
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| abacabaca | 3 aca ba ca |
Với gốc abaca (độ dài 5), phần còn lại baca tách thành ba và ca. Với gốc abacab (độ dài 6), phần còn lại aca là một hậu tố độ dài 3. Tập hậu tố có thể có là {aca, ba, ca}. |
| abaca | 0 | Độ dài xâu bằng 5, nên gốc phải chiếm cả 5 ký tự, không còn ký tự nào để làm hậu tố. |
Bình luận