Programmation - Chaînes puissances

Le site UVa Online Judge regroupe des problèmes de plusieurs concours de programmation ouvert aux étudiants. Il propose de nombreux exercices de nature algorithmique dont la résolution se fait en écrivant un programme en C, C++ ou Java qui est ensuite vérifié automatiquement sur un ensemble de données test.

Pour illustrer certains points du cours, nous vous proposerons des problèmes issus de ce site. Après la création d'un compte, vous pourrez donc soumettre vos solutions au site UVa Online Judge puis envoyer à l'adresse vergnaud@di.ens.fr votre solution (ainsi qu'une courte justification théorique) lorsque celles-ci auront été acceptées.

Une introduction à la programmation en C peut être trouvée ici ou .



Problème original : Power strings

Description

Étant données deux chaînes de caractères a et b, nous notons a*b leur concaténation. Par exemple si a="abc" et b="def" alors a*b="abcdef". En considérant la concaténation comme la multiplication, l'exponentiation par un entier positif est définie de la façon suivante : a^0 = "" (la chaîne vide) et a^(n+1) = a*a^n.

L'entrée consiste en plusieurs cas à traiter. Chaque cas à traiter est une ligne contenant une chaîne de caractères s. Pour chaque chaîne s, vous devez afficher la plus grand entier n tel que s=a^n pour une chaîne a. La longueur de s sera au moins 1 et au plus 1 million de caractères. Une ligne contenant un point suivra le dernier cas à traiter.

Exemple d'entrée

abcd
aaaa
ababab
.

Exemple de sortie

1
4
3
top

Exercice 1 - Complexité de l'algorithme naïf

top

Exercice 2 - Recherche de motifs avec erreurs

top

Exercice 3 - Distance de Damereau-Levenshtein

top

Exercice 4 - Recherche de motifs avec jokers

top