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

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 s. 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 s 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 s gồm các chữ cái Latin thường.

Dữ liệu ra

Dòng đầu in ra số nguyên k: số lượng hậu tố phân biệt có thể có.

Trên k 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

  • 5|s|104

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

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