On dira d'un entier qu'il serpente si ses chiffres alternent entre croissants et décroissants quand on les lit. Par exemple \(937\) est un nombre serpent : \(9\)\(3\)\(7\).
Nombre
Ce nombre est serpent ?
Justification
\(0\)
Oui
Un seul chiffre
...
...
...
\(9\)
Oui
Un seul chiffre
\(10\)
Oui
\(1\)\(0\)
\(11\)
Non
\(1\)\(1\)
\(12\)
Oui
\(1\)\(2\)
...
...
...
\(99\)
Non
\(9\)\(9\)
\(100\)
Non
\(1\)\(0\)\(0\)
\(101\)
Oui
\(1\)\(0\)\(1\)
...
...
...
\(123\)
Non
\(1\)\(2\)\(3\)
...
...
...
On dit qu'un nombre serpent est « croissant » si son dernier chiffre est strictement supérieur à son avant-dernier. Dans le cas contraire, il est dit « décroissant ».
On interdit, mis à part pour écrire \(0\), de placer le chiffre \(0\) en tête d'un nombre : ainsi \(08\) n'est pas une écriture autorisée et donc \(08\) ne compte pas comme un nombre serpent.
On se demande dans cet exercice combien il existe de de nombres serpents s'écrivant avec \(n\) chiffres (pour \(n\) inférieur à \(100\)).
Écrire la fonction nb_serpents qui prend en paramètre un entier n (1<=n<=100) et renvoie l'effectif des nombres serpent à n chiffres.
Combien existe-t-il de nombres serpents s'écrivant sur \(2\) chiffres sous la forme \(ab\) (\(a\) est le chiffre des dizaines, \(b\) celui des unités) ?
Tout d'abord, il est impossible d'avoir \(a = 0\) (pas de \(0\) en tête) ;
Il existe \(9\) nombres débutant par \(a=1\) : \(1\) décroissant (\(10\)) et \(8\) croissants (\(12\), \(13\), ..., \(19\)) ;
Il existe \(9\) nombres débutant par \(a=2\) : \(2\) décroissants (\(20\) et \(21\)) et \(7\) croissants (\(23\), \(24\), ..., \(29\)) ;
...
Enfin il existe \(9\) nombres débutant par \(a=9\) : \(9\) décroissants (\(90\), \(91\), ..., \(98\)) et aucun croissant.
Au total, il existe donc \(81\) nombres serpents s'écrivant sur \(2\) chiffres. Leur répartition en nombres croissants et décroissants est la suivante :
Effectifs de nombres serpents sur 2 chiffres
# se terminant par 0 1 2 3 4 5 6 7 8 9croissants=[0,0,1,2,3,4,5,6,7,8]decroissants=[9,8,7,6,5,4,3,2,1,0]
Indice (2)
Si un nombre est serpent s'écrit sur \(n\) chiffres et se termine par un chiffre \(b\) alors :
s'il est « croissant » alors son avant-dernier chiffre est strictement inférieur à \(b\) ;
s'il est « décroissant » alors son avant-dernier chiffre est strictement supérieur à \(b\).
On pourra donc garder trace à chaque étape de l'effectif de nombres serpents « croissants » et « décroissants » se terminant par \(0\), \(1\), ... et \(9\).
Indice (3)
Calculer l'effectif de nombres serpents à \(n\) chiffres peut se faire en additionnant :
l'effectif des nombres serpents se terminant par \(0\) en croissant ;
l'effectif des nombres serpents se terminant par \(1\) en croissant ;
l'effectif des nombres serpents se terminant par \(2\) en croissant ;
...
l'effectif des nombres serpents se terminant par \(9\) en croissant ;
l'effectif des nombres serpents se terminant par \(0\) en décroissant ;
l'effectif des nombres serpents se terminant par \(1\) en décroissant ;
l'effectif des nombres serpents se terminant par \(2\) en décroissant ;
...
l'effectif des nombres serpents se terminant par \(9\) en décroissant.
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)