Menu


1NSI

Les exercices python à connaître

premiers pas en Python
E1 boucles
E2 boucles
E3 boucles
E4 variables
E5 structure conditionnelle
E6 boucles
Un peu de binaire
E1 Nombre de bits
E2 Décalage binaire
E3 string
fonctions, str et listes
E1 Un compteur
E2 liste de nombres aléatoires
E3 moyenne d'une liste
E4 maximum d'une liste
E5 indices ou valeurs ?
Algorithmique partie 2
E1 Recherche séquentielle
E2 Recherche dichotomique
E3 Recherche dichotomique
E4 Nombre de 1
Les algorithmes de tri
E1 Est trié ?
E2 Tableau de 0 et de 1
E3 Inversion dans un tableau
tuples et dictionnaires
E1 Tuple
E2 Police, police
E3 Durées
E4 Anniversaires
E5 Message secret
E6 dictionnaire des occurences
E7 casser un digicode
Algorithmes gloutons
E1 Rendu de monnaie
E2 Livraisons à Manhattan

Rendu de monnaie

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