Exercice PROGRAMMATION Python : Le Nombre de Münchhausen
Alors Champion, savais-tu qu'en Allemagne, il y avait un baron pas comme les autres ? Le baron de Münchhausen est célèbre pour ses récits extravagants, notamment pour s'être élevé dans les airs avec son cheval en se tirant lui-même par sa propre queue de cochon ! Cette fantaisie mathématique donne son nom à un concept tout aussi fascinant en arithmétique : les nombres de Münchhausen, aussi appelés perfect digit-to-digit invariant (PDDI) en anglais.
Un nombre de Münchhausen est un nombre entier naturel qui, lorsqu'il est décomposé en ses chiffres, est égal à la somme de ces mêmes chiffres, chacun élevé à la puissance de lui-même. Pour ces calculs, nous acceptons que 00 = 0.
$$ n = d_k b^k + d_{k-1} b^{k-1} + \dots + d_1 b + d_0 = d_k d_k + d_{k-1} d_{k-1} + \dots + d_1 d_1 + d_0 d_0 $$
n=dkbk+dk−1bk−1+…+d1b+d0=dkdk+dk−1dk−1+⋯+d1d1+d0d0 .Un calcul élémentaire prouve que n est majoré par 2bb ; dans une base donnée, il n'existe donc qu'un nombre fini de perfect digit-to-digit invariants, dont on peut programmer le calcul. Zéro et un sont des perfect digit-to-digit invariants dans toutes les bases. En base dix, les deux seuls autres perfect digit-to-digit invariants sont 3 435 et 438 579 088 :
33+44+33+55=27+256+27+3125=3435 Par exemple, en base 10 :
- Le nombre 3435 est un nombre de Münchhausen, car : 3^3 + 4^4 + 3^3 + 5^5 = 27 + 256 + 27 + 3125 = 3435
L'objectif est d'écrire un programme Python qui permet de vérifier si un nombre donné par l’utilisateur est un nombre de Münchhausen. Le programme doit utiliser uniquement des structures conditionnelles et/ou des boucles, mais une contrainte supplémentaire s’ajoute : vous devez utiliser une structure Ternaire (voir Td 01).