E650. Le serpentin
Une grille carrée de côté n contient tous les entiers de 1 à n2 qui sont échelonnés le long d’un unique serpentin de telle sorte que deux entiers consécutifs sont adjacents le long d’une ligne ou d’une colonne.
Exprimer en fonction de n la valeur minimale et la valeur maximale de la somme des entiers inscrits le long d’une grande diagonale.
Application numérique : n = 2009 et n = 2010.
Solution proposée par Paul Voyer :
Pour obtenir la valeur mini, il faut chercher à ranger les plus grands nombres dans le triangle délimité par la diagonale (exclue), par exemple en haut à droite du tableau.
Dans les tableaux suffisamment grands, on peut étendre la zone de stockage des grands nombres en bas à gauche, le passage de cette zone à la précédente ne coûtera qu'une traversée de la diagonale, ici via la case du coin en bas à droite pour n pair, en haut à gauche pour n impair.
La diagonale comportera ainsi un maximum de petites valeurs, et la valeur indispensable pour relier les deux zones de stockage.
La transformation x|(n²+1-x) inverse l'ordre des n² nombres du tableau, et conserve la structure de la grille. Elle permute le minimum et le maximum sur une diagonale.
Le maxi se déduira de mini par mini+maxi=n(n²+1) (n termes de type [n²+1-x] sur une diagonale).
Deux techniques de rangement sont utilisables selon la parité de n : Si n est pair :
La diagonale mini vaut (1+3+5+…+2n-3) + le terme du coin, qui vaut n²/2+n-1 soit mini=(n-1)²+n²/2+n-1=3n²/2-n
Pour n=2010, mini= 6 058 140 Diagonale maxi = n(n²+1)-mini Pour n=2010, maxi= 8 114 544 870.
Si n est impair :
La diagonale mini vaut (1+3+5+…+2n-3) + le terme du coin, qui vaut (n²+1)/2+n-1 soit mini=(n-1)²+n²/2+n-1/2=3n²/2-n+1/2
Pour n=2009, mini= 6 052 113 Pour n=2009, maxi= 8 102 436 625.