Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#1 02-01-2025 14:31:05

ProfesseurMathématiques44
Membre
Inscription : 02-01-2025
Messages : 7

15€ en 15 pièces.

Bonjour,

Un défi très simple dans l'explication mais plus compliqué dans la résolution.

Voici le défi : écrire toutes les façons d'obtenir exactement 15€ en exactement 15 pièces.

Exemple : 15 pièces de 1€, c'est bien exactement 15€ en exactement 15 pièces.

A vous de jouer si ça vous dit...

De mon côté, j'ai trouvé "à la main" 36 combinaisons possibles.

Hors ligne

#2 02-01-2025 14:59:13

Ernst
Membre
Inscription : 30-01-2024
Messages : 327

Re : 15€ en 15 pièces.

Bonjour,

J'en ai trouvé "informatiquement" trente-sept, yé !

détail

(valeurs exprimées en centime)

  1:    1   1   1   2   5  20  20  50 200 200 200 200 200 200 200
  2:    1   2   2   5  10  10  20  50 200 200 200 200 200 200 200
  3:    1   2   2   5  20  20  50 100 100 200 200 200 200 200 200
  4:    2   2   2   2   2  20  20  50 200 200 200 200 200 200 200
  5:    5   5   5   5   5   5  20  50 200 200 200 200 200 200 200
  6:    5   5   5   5  10  10  10  50 200 200 200 200 200 200 200
  7:    5   5   5   5  10  20  50 100 100 200 200 200 200 200 200
  8:    5   5   5   5  20  20  20  20 200 200 200 200 200 200 200
  9:    5   5  10  10  10  10  50 100 100 200 200 200 200 200 200
 10:    5   5  10  10  10  20  20  20 200 200 200 200 200 200 200
 11:    5   5  10  10  20  50  50  50 100 200 200 200 200 200 200
 12:    5   5  10  10  20  50 100 100 100 100 200 200 200 200 200
 13:    5   5  10  20  20  20  20 100 100 200 200 200 200 200 200
 14:    5   5  20  20  50  50  50  50  50 200 200 200 200 200 200
 15:    5   5  20  20  50  50  50 100 100 100 200 200 200 200 200
 16:    5   5  20  20  50 100 100 100 100 100 100 200 200 200 200
 17:   10  10  10  10  10  10  20  20 200 200 200 200 200 200 200
 18:   10  10  10  10  10  50  50  50 100 200 200 200 200 200 200
 19:   10  10  10  10  10  50 100 100 100 100 200 200 200 200 200
 20:   10  10  10  10  20  20  20 100 100 200 200 200 200 200 200
 21:   10  10  10  20  50  50  50  50  50 200 200 200 200 200 200
 22:   10  10  10  20  50  50  50 100 100 100 200 200 200 200 200
 23:   10  10  10  20  50 100 100 100 100 100 100 200 200 200 200
 24:   10  10  20  20  20  20  50  50 100 200 200 200 200 200 200
 25:   10  10  20  20  20  20 100 100 100 100 200 200 200 200 200
 26:   10  20  20  50  50  50  50  50 100 100 200 200 200 200 200
 27:   10  20  20  50  50  50 100 100 100 100 100 200 200 200 200
 28:   10  20  20  50 100 100 100 100 100 100 100 100 200 200 200
 29:   20  20  20  20  20  50  50  50  50 200 200 200 200 200 200
 30:   20  20  20  20  20  50  50 100 100 100 200 200 200 200 200
 31:   20  20  20  20  20 100 100 100 100 100 100 200 200 200 200
 32:   50  50  50  50  50  50  50  50  50  50 200 200 200 200 200
 33:   50  50  50  50  50  50  50  50 100 100 100 200 200 200 200
 34:   50  50  50  50  50  50 100 100 100 100 100 100 200 200 200
 35:   50  50  50  50 100 100 100 100 100 100 100 100 100 200 200
 36:   50  50 100 100 100 100 100 100 100 100 100 100 100 100 200
 37:  100 100 100 100 100 100 100 100 100 100 100 100 100 100 100
 

Hors ligne

#3 02-01-2025 17:40:26

ProfesseurMathématiques44
Membre
Inscription : 02-01-2025
Messages : 7

Re : 15€ en 15 pièces.

Bonjour et bravo pour ce résultat en un temps record, yep !

Hors ligne

#4 02-01-2025 21:10:49

Ernst
Membre
Inscription : 30-01-2024
Messages : 327

Re : 15€ en 15 pièces.

Re-bonjour, ou plutôt bonsoir,

Eh bien merci, petit casse-tête fort intéressant il faut bien le dire.

J’en ai profité pour pondre un code Python qui demande la valeur en euro, le nombre de pièces, et qui affiche les solutions valides par exemple sur ce site (copier en fenêtre de gauche).

def trouver_combinaisons(valeur, nb_pieces):
    pieces = [200, 100, 50, 20, 10, 5, 2, 1]
    solutions = []
    def rec(somme_restante, pieces_restantes, index_piece, combinaison_actuelle):
        if somme_restante == 0 and pieces_restantes == 0:
            solutions.append(combinaison_actuelle[:])
            return
        if somme_restante < 0 or pieces_restantes == 0 or index_piece >= len(pieces):
            return
        combinaison_actuelle.append(pieces[index_piece])
        rec(somme_restante - pieces[index_piece], pieces_restantes - 1, index_piece, combinaison_actuelle)
        combinaison_actuelle.pop()
        rec(somme_restante, pieces_restantes, index_piece + 1, combinaison_actuelle)
    rec(valeur, nb_pieces, 0, [])
    return solutions
def afficher_solutions(solutions):
    for i, solution in enumerate(solutions, 1):
        print(f"{i:3}: {' '.join(f'{p:3}' for p in solution)}")
if __name__ == "__main__":
    try:
        valeur = int(input("Valeur (en euro) : ")) * 100
    except EOFError:
        print("Erreur : Aucune entrée reçue. Utilisation d'une valeur par défaut.")
        valeur = 100
    nb_pieces = int(input("Nombre de pièces : "))
    print(f"\nSolutions pour {valeur} centimes avec {nb_pieces} pièces :")
    solutions = trouver_combinaisons(valeur, nb_pieces)
    if not solutions:
        print("Aucune solution trouvée.")
    else:
        afficher_solutions(solutions)

Vaut mieux rester dans les petits nombres, les dénombrements c’est vite monstrueux, 10 euros et 20 pièces c’est déjà 688 solutions distinctes...

(en passant j’avions un site sur lequel je mettais mon code, v’là-t-y pas que Google l’a supprimé avec alerte rouge, me faire passer pour un gros malhonnête moi je dis bravo)

Hors ligne

#5 02-01-2025 21:31:48

ProfesseurMathématiques44
Membre
Inscription : 02-01-2025
Messages : 7

Re : 15€ en 15 pièces.

Bonsoir,

Oui, effectivement, on peut vite atteindre un très grand nombre de solutions distinctes...

Cette énigme ne se trouve normalement pas sur internet. Je la connais grâce à mon prof de maths de 6ème (il y a plus de 20 ans déjà) qui m'avait proposé ce défi.

Dernière modification par ProfesseurMathématiques44 (02-01-2025 21:32:50)

Hors ligne

Réponse rapide

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
quatre-vingt quinze moins six
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Pied de page des forums