On s'intéresse au problème du rendu d'une quantité somme_a_rendre de monnaie.
On suppose qu'on dispose d'un nombre infini
- de billets de 5 euros,
- de pièces de 2 euros
- et de pièces de 1 euro.
Le but est d'écrire une fonction nommée rendu dont le paramètre est un entier positif somme_a_rendre qui renvoie un tuple de trois entiers qui correspondent aux nombres de billets de 5 euros de pièces de 2 euros et de pièces de 1 euro à rendre afin que le total rendu soit égal à somme_a_rendre, avec le moins de billets et de pièces possible.
Il n'est pas question ici d'utiliser la force brute qui consisterait à calculer toutes les possibilités, ce qui prendrait beaucoup trop de temps.
On va donc mettre en place une stratégie gloutonne : On commencera par rendre le nombre maximal de billets de 5 euros, puis celui des pièces de 2 euros et enfin celui des pièces de 1 euro.
Exemples :
>>> rendu(7)
(1, 1, 0)
>>> rendu(10)
(2, 0, 0)
>>> rendu(13)
(2, 1, 1)
>>> rendu(32)
(6, 1, 0)
On pourra utiliser les opérateurs de la division entière :
-
L'opérateur // permet de calculer la division entière entre deux nombres entiers, à savoir le quotient de leur division euclidienne.
>>> 10 // 4
2
-
L'opérateur % permet de trouver le reste de la division entière entre deux nombres.
>>> 10 % 3
1
source : https://codex.forge.apps.education.fr