Salut à tous ,

Je m'entraîne pour l'olympiade national de programmation (tunisien) , et je me suis heurté à ce problème qui a été proposé lors d'un olympiade régional , voilà le texte du problème :
"Le compte est bon" est un jeu très populaire dont le principe est simple : on donne des valeurs entières, et il faut trouver une formule mathématique utilisant une fois au plus chacune de ces valeurs, et dont le résultat soit égal à un nombre donné.

Plus précisément, on donne 6 nombres entiers, appelées les "plaques", choisis dans l'ensemble {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 25, 50, 75, 100}. On se demande alors s'il est possible d'obtenir une valeur donnée entre 0 et 999 en combinant les valeurs de départ à l'aide des quatre opérateurs élémentaires, qui sont l'addition, la soustraction (lorsqu'elle donne un résultat positif), la multiplication, et la division entière (lorsqu'elle tombe juste). Les valeurs de départ ne peuvent être utilisées qu'une seule fois au plus chacune. On doit toujours utiliser au moins une plaque, y compris si la valeur à atteindre vaut 0.

Par exemple, avec les plaques 4, 9, 8, 2, 8, et 75, on peut obtenir le nombre 309 de la manière suivante :

309 = 4 * (75 + 2) + (8 / 8)

Notez que la plaque 9 n'a pas été utilisée, et que chacune des deux plaques 8 a été utilisée une fois. Notez que l'on n'a pas le droit de faire des opérations comme 9 / 2, ni 2 / 4, ni 2 - 4.

Le but de ce sujet est de déterminer le nombre de valeurs différentes qu'il est possible d'obtenir à partir d'un ensemble fixé de plaques.

CONTRAINTES

* 1 <= N <= 6, où N est le nombre de plaques.

* Vi dans l'ensemble {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 25, 50, 75, 100}, où Vi est la valeur d'une plaque.

ENTRÉE

* Un entier N : le nombre de plaques.

* Les N entiers : les valeurs des plaques.

SORTIE

Affichez un entier : le nombre de valeurs différentes que l'on peut atteindre entre 0 et 999 inclus.

EXEMPLE

ENTREE
3
1 3 5
Sortie : 16
J'ai demandé à un ami de me donner sa solution et c'est dans ce lien .
Mais le problème c'est que je ne comprends pas le C++ , je fais du PHP et un peu de C pas plus . Alors si vous pouvez m'expliquer qu'es ce qu'il a fait exactement et c'est quoi l'algorithme qu'il a utilisé , ça serai très gentil de votre part et si vous pouvez traduire son code en C ou en PHP pour que je comprenne .

Une petite dernière question : es ce que vous pensez que c'est un problème difficile ou simple parce que je déprime (un peu exagéré mais bon ) et l'épreuve est prévue pour le lundi