forked from menault/2026_TD3_DEV51_Qualite_Algo
922703999f38ec16f037a170ad7c2bb1aa9d14cf
La triple boucle recalculait la somme de chaque période (i, j) : J(J+1)(J+2)/6 = 167 millions d'additions pour 1 000 jours. Avec les sommes préfixes, la meilleure période finissant au jour j commence juste après le plus petit préfixe vu jusque-là : un seul parcours suffit. En gardant le premier minimum et en ne remplaçant le meilleur que s'il est strictement dépassé, on retrouve la même période que l'original en cas d'égalité (vérifié sur 200 000 tableaux aléatoires). Temps (-O2) : 0,25 s → 0,10 s. Empreinte inchangée (ff68d260a7a58441). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
TD3 — Complexité algorithmique (R5.A.04)
Fichiers
banque.c: le programme à analyser et à optimiserevaluer.sh: vérifie votre solution et mesure son temps d'exécution pour le concours
Démarrage
gcc -O2 banque.c -o banque
time ./banque # notez le temps et l'empreinte
gcc -O0 -g -pg banque.c -o banque_pg
./banque_pg && gprof ./banque_pg gmon.out > profil_avant.txt
Règles
- L'empreinte affichée doit rester
ff68d260a7a58441. - Interdit : modifier les constantes,
alea,generer_transactionsou le format du rapport, écrire les résultats en dur, utiliser des threads ou des bibliothèques externes. - Autorisé : changer les signatures, réorganiser
main, ajouter fonctions et structures, utiliser la bibliothèque standard du C.
Rendu
- Un commit par optimisation.
COMPTE_RENDU.mdà la racine : complexités avant / après de F1 à F10, profils gprof avant / après, justification de chaque optimisation.- Concours :
./evaluer.sh banque.c <votre_nom>vérifie l'empreinte et mesure le temps. La complexité cyclomatique est calculée à la main et vérifiée par l'enseignant.
Description
Languages
C
89.5%
Shell
10.5%