Ngôn ngữ Reberland

Đề bài

Mô tả

Trong ngôn ngữ Reberland, mỗi từ được xây dựng theo quy tắc sau:

  1. Chọn một gốc — một xâu ký tự có độ dài lớn hơn 4 (tức là ít nhất 5 ký tự).
  2. Sau đó, nối liên tiếp một số (có thể bằng 0) hậu tố hình vị, mỗi hậu tố có độ dài đúng 2 hoặc 3 ký tự.
  3. Ràng buộc duy nhất: không được nối hai hậu tố giống hệt nhau liên tiếp nhau (kề nhau).

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ể đóng vai trò là một hậu tố hình vị nào đó khi phân tích s theo quy tắc trên.

Hai xâu được coi là phân biệt nếu chúng khác độ dài, hoặc tồn tại một vị trí mà ký tự tương ứ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 tiếng Anh in thường.

Dữ liệu ra

Dòng đầu in số nguyên k — số lượng hậu tố phân biệt tìm được.

k dòng tiếp theo, mỗi dòng in một hậu tố, sắp xếp theo thứ tự từ điển tăng dần.

Ràng buộc

  • 5|s|104.
  • s chỉ gồm các chữ cái tiếng Anh in thường.

Ví dụ

Input Output Giải thích
abacabaca 3
aca
ba
ca
Ví dụ một cách phân tích: gốc = abaca, sau đó nối hậu tố ba, rồi ca. Một cách khác: gốc = abac... không được vì gốc phải dài hơn 4. Với các cách phân tích hợp lệ, tập hậu tố xuất hiện là {aca, ba, ca}.
abaca 0 |s|=5, vậy gốc chiếm đúng toàn bộ xâu, không còn ký tự nào cho 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 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