Cupide (Misc) - FCSC2022

Principe:
Exploiter un oubli de l'algo, ou choisir un système monérataire 'moisi'

Infos (cf menu latéral):
🚩 Flaggué! +293 points gagnés — 💾 Téléchargez les fichiers du challenge
FCSC{bfa26d8861b987d439fe8d8f1004e8b8ea07a7b6f936b844e0f78f43c2dc33e9}

Le challenge

Le challenge nous donne un fichier python dont on doit battre l'algorithme

Comprendre

On lance, on met des print un partout et on cherche à comprendre

Le programme nous demande une valeur T (42), une liste de valeurs possibles L ([9 8 7 6 5 4 3 2 1]). L'algorithme "glouton" du python va alors trouver une liste R de valeurs parmi L de sorte que sa somme fasse T et qui est censée être la plus petite liste possible. Notre but est de trouver une liste S de même somme (égale à T) plus courte que R.

On peut considérer que l'algorithme "rend la monnaie" (d'où le titre "Cupide" sans doute): il doit nous rendre T avec des pièces de valeur L

Un bug?

En pratique, nulle part dans le code, ne figure la condition "les valeurs de S doivent être issues de L"! On peut donc choisir S = [T]

Et le flag tombe facilement

J'ignore si la condition "S utilise des valeurs de L" a volontairement été oubliée dans le challenge, ou s'il s'agit d'une réelle erreur des makers!
S'il s'agit d'une erreur dans la création du challenge, alors tout système T=2X L=(1 X 2X>Y) S=(X X) marcherait (exemple: T=6 L=(1 3 4) R=(4 1 1) S=(3 3))

Flag: FCSC{bfa26d8861b987d439fe8d8f1004e8b8ea07a7b6f936b844e0f78f43c2dc33e9}