CF666A.Reberland Linguistics

普及+/提高

通过率:0%

时间限制:1.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

First-rate specialists graduate from Berland State Institute of Peace and Friendship. You are one of the most talented students in this university. The education is not easy because you need to have fundamental knowledge in different areas, which sometimes are not related to each other.

For example, you should know linguistics very well. You learn a structure of Reberland language as foreign language. In this language words are constructed according to the following rules. First you need to choose the "root" of the word — some string which has more than 4 letters. Then several strings with the length 2 or 3 symbols are appended to this word. The only restriction — it is not allowed to append the same string twice in a row. All these strings are considered to be suffixes of the word (this time we use word "suffix" to describe a morpheme but not the few last characters of the string as you may used to).

Here is one exercise that you have found in your task list. You are given the word s. Find all distinct strings with the length 2 or 3, which can be suffixes of this word according to the word constructing rules in Reberland language.

Two strings are considered distinct if they have different length or there is a position in which corresponding characters do not match.

Let's look at the example: the word abacabaca is given. This word can be obtained in the following ways: , where the root of the word is overlined, and suffixes are marked by "corners". Thus, the set of possible suffixes for this word is {aca, ba, ca}.

一流专家毕业于贝尔兰和平与友谊国立学院。你正是这所大学中最富才华的学生之一。学业并不轻松,因为你需要在各个不同领域打下扎实的基础知识,而这些领域有时彼此毫无关联。

例如,你必须精通语言学。你正在将雷伯兰语作为一门外语来学习。在该语言中,单词的构成遵循如下规则:首先,你需要选定单词的“词根”——一个长度严格大于 4 的字符串;然后,在该词根之后依次追加若干个长度为 2 或 3 的字符串。唯一限制是:不允许连续两次追加完全相同的字符串。所有这些被追加的字符串均被视为该单词的“后缀”(此处“后缀”指构词学中的语素,而非通常意义上字符串末尾的若干字符)。

你任务清单中出现了如下一道练习题:给定一个单词 $ s $,请找出所有互不相同、且长度为 2 或 3 的字符串,使得它们可能作为该单词在雷伯兰语构词规则下的后缀。

若两个字符串长度不同,或存在某个位置使得对应字符不相等,则认为这两个字符串互不相同。

我们来看一个例子:给定单词 $ abacabaca $。该单词可按如下方式构造:,其中词根部分被加下划线标出,各后缀则用“角号”标记。因此,该单词所有可能的后缀组成的集合为 $ {aca,\ ba,\ ca} $。

输入格式

The only line contains a string s (5 ≤ |s| ≤ 104) consisting of lowercase English letters.

仅有一行,包含一个字符串 $ s (( 5 \leq |s| \leq 10^4 $),由小写英文字母组成。

输出格式

On the first line print integer k — a number of distinct possible suffixes. On the next k lines print suffixes.

Print suffixes in lexicographical (alphabetical) order.

第一行输出整数 kk —— 表示不同可能后缀的个数。接下来的 kk 行输出这些后缀。

后缀需按字典序(字母顺序)输出。

输入输出样例

  • 输入#1

    abacabaca

    输出#1

    3
    aca
    ba
    ca
  • 输入#2

    abaca

    输出#2

    0

说明/提示

The first test was analysed in the problem statement.

In the second example the length of the string equals 5. The length of the root equals 5, so no string can be used as a suffix.

第一个测试用例已在题目描述中进行了分析。

在第二个示例中,字符串的长度为 5。根的长度也为 5,因此无法使用任何字符串作为后缀。

输入解题思路,AI测评打分。不知道怎么写?

首页