Deslocamento cíclico e busca de substrings repetidas
C#
Hard
loops
Tarefa «Deslocamento cíclico e busca de substrings repetidas»
Dada uma string S, composta por letras minúsculas do alfabeto latino. É necessário realizar um deslocamento cíclico da string para a esquerda em K posições (K pode ser maior que o comprimento da string). Após o deslocamento, encontrar todas as substrings repetidas não sobrepostas de comprimento L (L é fornecido) na nova string. Uma substring repetida é uma substring que ocorre duas ou mais vezes na string, e suas ocorrências não devem se sobrepor. Exibir a quantidade de tais substrings e as próprias substrings em ordem lexicográfica. Se não houver tais substrings, exibir 0.
Formato de Entrada
Na primeira linha, um número inteiro N (1 ≤ N ≤ 1000) — comprimento da string. Na segunda linha, a própria string S. Na terceira linha, um número inteiro K (0 ≤ K ≤ 10^9) — quantidade de deslocamentos. Na quarta linha, um número inteiro L (1 ≤ L ≤ N) — comprimento da substring.
Formato de Saída
Na primeira linha, exiba um número inteiro M — a quantidade de substrings repetidas não sobrepostas únicas de comprimento L. Se M > 0, nas próximas M linhas, exiba as próprias substrings em ordem lexicográfica.
Exemplos
Exemplo 1
ENTRADA
5
abcde
3
2
SAÍDA
0
Exemplo 2
ENTRADA
10
abracadabra
5
4
SAÍDA
1
abra
main.cs