next up previous contents index
suivant: Accélération de convergence vers monter: Bézout précédent: Avec le tableur   Table des matières   Index


Les pas de Louis

Louis marche sur la bordure du trottoir, comptant les fois où une de ses semelles chevauche un joint entre deux blocs (si son talon est tangent il chevauche le joint, mais si la pointe est tangente il ne chevauche pas).
Le trottoir comporte 150 blocs d'un mètre (il n'y a pas de joint au debut ni à la fin du trottoir).
Son pas est de 61 cm et ses semelles mesurent 21 cm et les joints n'ont pas d'épaisseur.
Combien de fois Louis marche-t-il sur un joint?

Réponse
Il y a 149 joints.
Il faut tout d'abord voir qu'au p-ième pas les semelles de Louis sont entre (p*61) cm et (p*61 + 21) cm. Ses semelles couperont le n-ième joint si :
100*n = pn*61 + rn avec 0 $ \leq$ rn < 21
On va donc dans un premier temps écrire la suite des restes rn à l'aide du tableur.
On definit donc :
A0 par 0
A1 par =A0+1
puis, on tape sur remplir et vers le bas, lorsque A1 est en surbrillance, pour avoir la suite des entiers 0,1, etc...
B0 par 0
B par 1=irem(100*A1,61)
puis on tape sur remplir et vers le bas, lorsque B1 est en surbrillance, pour avoir la suite des restes rn.
Bien sûr il n'est pas facile de compter les restes inférieurs à 21.
On va donc définir une colonne qui fera ce comptage.
On definit donc :
C0 par 0
C1 par =ifte(B1<21,C0+1,C0)
La réponse au problème est donc la valeur de C149 et on trouve 51.
Louis marche donc 51 fois sur un joint.

On peut aussi utiliser la commande count (ou la commande count_inf) qui compte les éléments du tableur pour lesquels une fonction booléenne est vraie :
On tape, par exemple dans D0 :
count(x->x<21,B1:B149)
ou on tape dans D0 :
count_inf(21,B1:B149)
On prend en compte les cellules B1:B149, car il n'y a pas de joints au début, ni à la fin.
On obtient dans D0 : 51.

On peut aussi écrire un petit programme dont voici l'algorithme :

louis nbloc
0 -> k
pour n de 1 a nbloc-1 faire
si (n*100 mod 61 <21) alors k+1 -> k 
fsi
fpour
afficher k
qui se traduit en langage Xcas par :
louis(nbloc):={
k:=0;
for (n:=1;n<nbloc:n++){
if (irem(n*100,61)<21) k:= k+1; 
}
return k;
}
Puis, on tape louis(150)
et on obtient 51.
next up previous contents index
suivant: Accélération de convergence vers monter: Bézout précédent: Avec le tableur   Table des matières   Index
Documentation de giac écrite par Renée De Graeve