Exercice PROGRAMMATION C : 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 en C 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).