Forum de mathématiques - Bibm@th.net
Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#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
#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).
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








