Solução Informática – Nível Intermediário – Semana 12

por

Solução por Anita Ramos

Iniciando a programação, após adicionar a biblioteca, declaramos as variáveis e vetores utilizados e lemos as linhas de entrada. Em seguida, até que toda a sequencia de letras de entrada seja percorrida, somamos 1 ao vetor de cada letra que aparece na entrada, de acordo com a sua posição na tabela $$ASCII$$ e no alfabeto. Depois, temos um loop que soma o valor do vetor de cada letra do alfabeto a $$res$$ se esse valor for divisível por $$k$$, ou seja, checamos se com a quantidade de todas letras podemos fazer $$k$$ vezes a mesma sequência. Por fim, temos a verificação se é possível criar uma sequência de acordo com a entrada (se $$res = tamanho$$ $$da$$ $$sequencia$$) e se sim partimos para a parte de imprimir uma sequência possível.

Se $$k=1$$, imprime-se a própria sequência da entrada. Se não, enquanto $$k>0$$ imprimimos uma determinada letra de acordo com a quantidade de vezes que ela deve aparecer em uma “mini-sequência”. Por exemplo, para a sequência “abababaaa” e $$k=3$$, temos que uma possível mini-sequência é “aab”, sendo que esta aparecerá 3 vezes ($$k=3$$). Assim, “aabaabaab”. Nesse exemplo, a cada mini-sequência, “a” deve aparecer 2 vezes e “b” apenas 1 vez. Essa lógica se passa alfabeticamente, de a-z, e é determinada pela quantidade de vezes que a letra aparece divido por $$k$$, ou seja, $$\frac{cont[letra]}{k}$$ (sendo letra o índice da letra no alfabeto).

Segue o código comentado para melhor compreensão da solução:

https://gist.github.com/anitainfo/18eba1eb59d10c8acb5e55f2ebcd26ff