Nombres à 5 chiffres
Bonjour
Un exercice du concours kangourou 2021 dont je ne dispose pas de solution. Ma réponse est-elle correcte ?
Soit un nombre entier naturel dont les chiffres, lus de gauche à droite, augmentent d'abord puis diminuent (2 chiffres adjacents n'étant jamais égaux).
Combien existe-t-il de nombres de la sorte à cinq chiffres dont la somme des chiffres est $9$ ?
Mon raisonnement.
Le premier chiffres est inférieur ou égal à 7 forcément. Il y a donc 8 choix (de 0 à 7)
Pour le deuxième chiffre, il doit être strictement supérieur ou premier, il y a donc 7 choix.
Pour le troisième chiffre, il y a 6 choix.
Pour les quatrièmes et cinquième chiffre, ils sont égaux aux second et premier donc 1 choix.
Au total, il y a $8 \times 7 \times 6 \times 1 \times 1 =336 $ possibilités.
Je cherche maintenant les nombres de la sorte tels que la somme des chiffres est $9$.
Le premier chiffre est forcément strictement inférieur à $2$, sinon on aurait $2+3+4+3+2 >9$. Le premier chiffre est donc 0 ou 1.
Le deuxième chiffre est strictement inférieur à 3 sinon c'est impossible. Il vaut 2 sinon la somme des chiffres est trop petite. Il ne peut pas valoir 0 car il est supérieur au premier.
Le troisième chiffre est strictement inférieur à 4 sinon c'est impossible. Il vaut forcément 2 ou 3 car il est supérieur au deux premiers chiffres.
Le nombre $\boxed{1 2 3 2 1}$ convient et c'est l'unique possibilité.
Un exercice du concours kangourou 2021 dont je ne dispose pas de solution. Ma réponse est-elle correcte ?
Soit un nombre entier naturel dont les chiffres, lus de gauche à droite, augmentent d'abord puis diminuent (2 chiffres adjacents n'étant jamais égaux).
Combien existe-t-il de nombres de la sorte à cinq chiffres dont la somme des chiffres est $9$ ?
Mon raisonnement.
Le premier chiffres est inférieur ou égal à 7 forcément. Il y a donc 8 choix (de 0 à 7)
Pour le deuxième chiffre, il doit être strictement supérieur ou premier, il y a donc 7 choix.
Pour le troisième chiffre, il y a 6 choix.
Pour les quatrièmes et cinquième chiffre, ils sont égaux aux second et premier donc 1 choix.
Au total, il y a $8 \times 7 \times 6 \times 1 \times 1 =336 $ possibilités.
Je cherche maintenant les nombres de la sorte tels que la somme des chiffres est $9$.
Le premier chiffre est forcément strictement inférieur à $2$, sinon on aurait $2+3+4+3+2 >9$. Le premier chiffre est donc 0 ou 1.
Le deuxième chiffre est strictement inférieur à 3 sinon c'est impossible. Il vaut 2 sinon la somme des chiffres est trop petite. Il ne peut pas valoir 0 car il est supérieur au premier.
Le troisième chiffre est strictement inférieur à 4 sinon c'est impossible. Il vaut forcément 2 ou 3 car il est supérieur au deux premiers chiffres.
Le nombre $\boxed{1 2 3 2 1}$ convient et c'est l'unique possibilité.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Je crois que j'ai mal compris l'énoncé, le chiffre du milieu est quelconque ? Il peut être égal au deuxième chiffre ou au quatrième ?
Pour le deuxième chiffre, il doit être strictement supérieur ou premier, il y a donc 7 choix.
hum hum
Pour le troisième chiffre, il y a 6 choix.
à nouveau hum hum !
Tu calcules un 336 qui est totalement faux. Premier mauvais point. Même avec la symétrie que tu ajoutes à l'énoncé, même en considérant qu'un nombre de 5 chiffres peut commencer par 0, c'est faux.
Et tu ne t'aperçois même pas que ce résultat de 336 ne te sert à rien dans la suite de ton raisonnement. Deuxième mauvais point.
.
<code><div></div><pre class="CodeBlock"><code><div>def les_bons():</div><div> bons = []</div><div> for n in range(10000, 100000):</div><div> a,b,c,d,e = [int(i) for i in str(n)]</div><div> if sum((a,b,c,d,e)) == 9 and b > a and d > e: </div><div> if ( c>b and c>d ) or ( b >c and c> d ) or (b<c and c <d ):</div><div> bons.append(n)</div><div> return bons</div><div> </div><div>print ( les_bons())</div>
Notons le nombre recherché $xyztu$ de sorte que $x+y+z+t+u=9$
On a d'après les conditions de l'énoncé $x<y$ et $t<u$. Ainsi, $x+y+z+t+u < 2y +z +2u $ et donc $x+y+z+t+u =9 > 2x +z+ 2t$
Soit $\boxed{2x+z+2t < 9}$
On sait que $0<x<4$ car sinon $x+y+z+t+u >9$. Ainsi $\boxed{x \in \{1,2,3 \}}$
De même $\boxed{t \in \{1,2,3 \}}$ Il y a donc 9 cas possibles.
Après dans chaque cas, il y a plein de cas, je me perds dans un nombre incalculable de cas.
J'ai peut être raté une astuce
Tu dis 3 possibilités pour x, et 3 possibilités pour u donc 9 possibilités pour (x,u)
Oui et non.
On peut multiplier quand ça sert à quelque chose, c'est à dire quand les 2 cases sont indépendantes.
Quand x=3, sachant que le total doit donner 9, x=3 consomme beaucoup d'espace, et donc limite les possibilités pour u.
Donc le 3x3 ne mène nulle part.
En plus, c'est un exercice de niveau collège, tu utilises un outil que les collégiens ne connaissent pas, et qui n'est pas adapté.
si x=3, forcément y vaut au moins 4, x+y donne 7 ou 8 ou 9, et donc z,t,u doivent être 3 chiffres, dont la somme donnerait 0 ou 1 ou 2.
Avec les contraintes données, on ne peut pas trouver de triplet (z,t,u) qui convient.
si x=2 et y=3 ...pas énormément de possibilités pour (z,t,u)
si x=2 et y=4 , pareil, on trouve très vite les triplets (z,t,u) qui conviennent.
Il y a une dizaine de cas à explorer pour le couple (x,y). 5 minutes de petits calculs.
On a forcément $y >x$ ce qui réduit les possibilités.
Si $x=1$ et $y=2$ alors $12051$, $12042$, $12132$, $12321$, $12420$, $12510$ conviennent.
Si $x=1$ et $y=3$ alors $13032$, $13131$, $12420$, $12510$ fonctionnent.
Si $x=1$ et $y=4$ alors $14031$, $14040$, $14121$, $14130$ fonctionnent.
Si $x=2$ et $y=3$ alors $23040$, $23031$, $23130$, $23121$ fonctionnent.
Si $x=2$ et $y=4$ alors $24030$, $24021$, $24120$, $24210$ fonctionnent.
Si $x=3$ et $y=4$ alors $34020$ convient.
Les nombres recherchés sont trop nombreux. J'ai sûrement faux
J'ai trouvé un corrigé qui en donne que 7.
On a des chiffres adjacents différents et $1<2$ tandis que $5>1$
Soit un nombre entier naturel dont les chiffres, lus de gauche à droite, augmentent d'abord puis diminuent .
Augmentent , puis diminuent... Dans ta 1ère réponse, tu avais su traduire ça correctement, mais tu faisais des calculs faux, sans aucun intérêt.
Maintenant, tu ne peux plus te tromper sur les calculs car on t'a tout dit, mais tu ne comprends plus l'énoncé de l'exercice !
Il reste donc 12321, 12420, 12510, 24210. Et j'en ai oublié, j'ai aussi oublié le cas $x=1$, $y=5$ :
Il me manque 13410, 14310, 15210,
Finalement il y 7 nombres recherchés.
Le problème est que j'avais mal compris l'énoncé
-- Schnoebelen, Philippe
-- Schnoebelen, Philippe
L'instruction p<-function() sert à quoi ? Pourquoi le résultat final affiche des [1] ?
Je ne trouve rien sur le net pour function()
Par contre Nicolas Patrois, ton code je n'ai pas bien compris.
Rien que la première ligne je ne comprends pas ce que fait : signe=lambda x: x and (1, -1)[x<0]
C'est quoi p[-1] ?
-- Schnoebelen, Philippe
p<-function() définit une fonction et l'appelle p.
Comme son nom l'indique signe=lambda x: x and (1, -1)[x<0] définit la fonction signe d'un nombre, c'est à dire +1 si x>0, 0 si x=0 et -1 si x<0. p[-1] est le dernier terme de la liste p.
Si tu ne connais pas Python, il te faut d'abord l'apprendre.
Ensuite, taper "Python lambda" dans google devrait être à ta portée.
Tu aurais d'ailleurs pu tester signe(x) dans n'importe quel environnement Python avec diverses valeurs de x.
Cordialement,
Rescassol
signe = lambda x : 0 if x==0 else x//abs(x)
-- Schnoebelen, Philippe
-- Schnoebelen, Philippe
Tu peux apprendre en autodidacte, il y a plein de bons sites pour cela, google t'aidera à en trouver. Après si tu ne fais pas de stats, je te conseille de plutôt diriger tes efforts vers Python.
Je doute que mes élèves de 4ème 3ème le réussissent même en devoir maison.
J'ai compris comment définir une fonction lambda (j'ai recherché) mais je ne comprends pas la syntaxe x and (1, -1)[x<0] ?
Je ne trouve rien sur internet en tapant ce passage du code. Je dois chercher quoi comme notion pour le comprendre ?
-- Schnoebelen, Philippe
x and (1, -1)[x<0]
Et tu joues, en écrivant des programmes de 4 lignes, puis de 5 lignes ... puis un peu plus compliqués.
Tu regardes ce que fais cette fameuse instruction.
Il faut mettre les mains dans le cambouis, il n'y a pas d'autre méthode. Mais ça veut aussi dire qu'il faut réfléchir.
def s(x):
Lourrran je voulais juste savoir ce que signifie x and (1, -1)[x<0] mais ça reste du chinois pour moi cette syntaxe et on ne trouve rien sur le net qui l'explique.
Le code de Nicolas Patrois m'a l'air compliqué, je pense que Bisam a donné un code plus simple. Zgrb je comprends tout le code mais ce n'est pas du Python apparemment.
Bisam, que fait la dernière ligne ? Je sais que str donne une chaîne de caractères mais je n'ai pas compris la dernière ligne.
La ligne 1 on crée une fonction.
La ligne 2 on crée une liste vide.
La ligne 3 on prendre les nombres entre 10 000 et 99 000
-- Schnoebelen, Philippe
str(n) transforme l'entier n en une chaîne de caractères.
Par exemple str(12345) est la chaîne '12345', c'est juste un changement de type pour pouvoir faire fonctionner le in.
Enfin a,b,c,d,e = [int(i) for i in str(n)] met les chiffres de l'entier n dans 5 variables a,b,c,d,e
Cordialement,
Rescassol
-- Schnoebelen, Philippe
Nicolas Patrois d'accord merci. Un livre sur Python pour lycéen me permettrait d'apprendre les bases.
-- Schnoebelen, Philippe
Est-ce que tes bases en programmation sont plus solides ou moins solides que tes bases en mathématique ?
=======================
-- Schnoebelen, Philippe
Lourrran vu que je n'ai pas bossé la programmation depuis plus de 10 ans, je pense être meilleur en maths qu'en programmation.
Étant prof en collège, je manipule plutôt Scratch que Python.
-- Schnoebelen, Philippe
Et disons aussi que mon premier réflexe n'est pas de me précipiter sur le forum pour dire que je n'y comprends rien.