π
<-

Correction algo Olympiades Académiques 2013 1S Aix-Marseille

Toutes les news concernant les examens (BAC, DNB, etc.) et concours scolaires

Correction algo Olympiades Académiques 2013 1S Aix-Marseille

Unread postby critor » 02 May 2013, 14:25

Après le BAC et le Concours Général, aux Olympiades Académiques 2013 de 1ère sont tombés de nombreux algorithmes.

Intéressons-nous aujourd'hui à l'algorithmique qui est tombé en exercice 3 pour les Premières S dans l'Académie d'Aix-Marseille:
Image




Question 1)a):
Nous étudions donc l'équation (E) 81a+125b+149c=2013, où a, b et c sont des entiers naturels.

Nous avons donc b≥0 et c≥0.
On en déduit 125b≥0 et 149c≥0.
Par sommation des inégalités, 125b+149c≥0

Mais l'équation (E) peut aussi s'écrire 125b+149c=2013-81a.
On en déduit 2013-81a≥0,

D'où: 2013≥81a
2013/81≥a
a≤2013/81

Comme a est un entier positif et que 2013/81≈24,9 on en déduit que 0≤a≤24.

On montre de même que b≤2013/125 et c≤2013/149, ce qui donne 0≤b≤16 et 0≤c≤13.



Question 1)b):
On nous demande donc maintenant d'écrire un algorithme recherchant tous les triplets (a,b,c) solutions de (E).

Il s'agit donc de vérifier l'équation (E) pour tous les triplets de valeurs possibles pour (a,b,c).

L'on peut faire cela en imbriquant 3 boucles 'pour':

Code: Select all
Pour a de 0 à 24 faire
   Pour b de 0 à 16 faire
      Pour c de 0 à 13 faire
         Si 81a+125b+149c=2013 alors
            Afficher (a,b,c)
         FinSi
      FinPour
   FinPour
FinPour


Remarquons que cet algorithme revient à tester 25*17*14=5950 triplets de valeurs.

Il est possible de traduire cet algorithme en un programme pour nos TI-Nspire, qui nous fournissent un seul triplet de solutions (15,4,2) en seulement quelques secondes! :bj:
Image


Le même programme est réalisable sur nos TI-82 à TI-84 ou Casio Graph/Prizm, mais il faudra cette fois-ci patienter quelques dizaines de secondes avant d'obtenir les mêmes solutions:
ImageImage


ImageImageImage


Sans doute est-ce à cause de ce long temps de calcul que la question suivante fait cadeau de a=15! ;)



Jusqu'à présent les boucles 'pour' sont peu fréquentes au BAC, au profit de boucles 'tant que'.
C'est donc une excellente chose d'en parler aujourd'hui, afin de ne pas avoir de trou de mémoire le jour J si jamais... ;)



Lien:
Olympiades Académiques de Mathématiques 2013 - 1èreS (Aix-Marseille)
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 48%
 
Posts: 41987
Images: 15891
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: Correction algo Olympiades Académiques 2013 1S Aix-Marse

Unread postby nikitouzz » 02 May 2013, 15:17

J'avais pas vu que Critor avait déjà corrigé l'algo mais du coup j'en ai fait un :

BASIC :

Code: Select all
:0→A→B→C
:tant que C=!14
: If 81A+125B+149C=2013
:  Disp "solution :","A=",A,"B=",B,"C=",C
: A+1→A
: If A=25
:  then
:  0→A
:  B+1→B
: End
: If B=17
:  then
:  0→B
:  C+1→C
: End
:End


Et en AXE pour montrer la puissance d'optimisations :p

Code: Select all
:0→A→B→C
:while1
: !If *149+81*A+125*B-2013
:  Disp "solution :","A=",A,"B=",B,"C=",C
: End
: A++-25??→A+1+B→B,B
: -17??→B+1+C→C,C
:End!If -14
Mes records personnels :
2x2x2 : 2.18 secondes / 2x2x2 une main : 21.15 secondes / 2x2x2 yeux bandés : 47.59
3x3x3 : 5.97 secondes / 3x3x3 une main : 49.86 secondes
4x4x4 : 1.49 minutes / 4x4x4 une main : 6.50 minutes
5x5x5 : 4.10 minutes / 5x5x5 une main : 18.02 minutes
6x6x6 : 8.10 minutes
7x7x7 : 16.03 minutes
9x9x9 : 58.26 minutes

megaminx : 5.59 minutes / pyraminx : 7.91 secondes / square-one : 1.07 minutes

Image
User avatar
nikitouzzModo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 42.7%
 
Posts: 1016
Images: 1
Joined: 16 Feb 2012, 18:39
Gender: Male
Calculator(s):
MyCalcs profile
Class: Fac de maths

Re: Correction algo Olympiades Académiques 2013 1S Aix-Marse

Unread postby critor » 02 May 2013, 15:37

On sort du cadre de ce qui était attendu par l'énoncé je pense, mais voici une petite astuce d'optimisation.

Par exemple, lorsque a=10 et b=5 il est inutile d'incrémenter c au delà de 3 jusqu'à 13, car on dépasse alors strictement 2013 pour 81a+125b+149c.

Voici donc un nouvel algorithme avec une simple boucle 'tant que', qui teste et arrête d'incrémenter a, b et c lorsque l'on ne peut plus espérer trouver de solution pour des valeurs plus grandes.
(en conséquence, les valeurs 24, 16 et 13 de l'énoncé sont inutiles)
Image
Image

Au lieu de 5950 passages dans la boucle, je n'en ai plus que 1158! :bj:
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 48%
 
Posts: 41987
Images: 15891
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: Correction algo Olympiades Académiques 2013 1S Aix-Marse

Unread postby Bisam » 02 May 2013, 15:38

Ah bah non, c'était mon idée...
Mince, je n'ai pas été assez rapide !
User avatar
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 69.6%
 
Posts: 5670
Joined: 11 Mar 2008, 00:00
Location: Lyon
Gender: Male
Calculator(s):
MyCalcs profile

Re: Correction algo Olympiades Académiques 2013 1S Aix-Marse

Unread postby critor » 02 May 2013, 15:43

Ah, pas vu désolé.


On peut sûrement faire d'autres optimisations encore.

Si l'on parcourt les solutions dans un certain ordre, je pense que l'on n'est pas obligé de réinitialiser les compteurs b et c jusqu'à 0 lorsqu'ils 'dépassent'.
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 48%
 
Posts: 41987
Images: 15891
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: Correction algo Olympiades Académiques 2013 1S Aix-Marse

Unread postby Bisam » 02 May 2013, 15:52

Tant pis, je redonne une autre méthode (c'est la même, mais déguisée et en sautant une des boucles) :
Code: Select all
For a,0,24
  IntDiv(2013-81a,125)->d
  For b,0,d
    IntDiv(2013-81a-125b,149)->c
    If 81a+125b+149c=2013
       Disp {a,b,c}
  EndFor
EndFor

Avec ce code, on ne fait que 221 passages dans les boucles...
User avatar
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 69.6%
 
Posts: 5670
Joined: 11 Mar 2008, 00:00
Location: Lyon
Gender: Male
Calculator(s):
MyCalcs profile

Re: Correction algo Olympiades Académiques 2013 1S Aix-Marse

Unread postby Adriweb » 02 May 2013, 17:33

Joli :)


nikitouzz :

!If *149+81*A+125*B-2013
c'est pas un octet plus long que :
If *149+81*A+125*B=2013
?

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
My calculator programs
Mes programmes pour calculatrices
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 78.9%
 
Posts: 14744
Images: 1119
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

Re: Correction algo Olympiades Académiques 2013 1S Aix-Marse

Unread postby nikitouzz » 02 May 2013, 18:52

Non adriweb car l'axe est un langage compilé faut donc connaitre le compilateur ;) cependant je viens d'avoir une superidée pour otpimiser je poste le code des qu ej le paufine par contre impossible de le faire en basic je le poste donc en axe.

EDIT :
Code: Select all
:0→A→B→C
:while1
: !If C*149+(81*(A^24))+((B^16)*125)-2013
:  Disp "solution :","A=",A^24>dec,"B=",B^16>dec,"C=",C
: End
: (A++^24=0)+B->B
:(^17=0)+C->C
:End!If -14


voila
Mes records personnels :
2x2x2 : 2.18 secondes / 2x2x2 une main : 21.15 secondes / 2x2x2 yeux bandés : 47.59
3x3x3 : 5.97 secondes / 3x3x3 une main : 49.86 secondes
4x4x4 : 1.49 minutes / 4x4x4 une main : 6.50 minutes
5x5x5 : 4.10 minutes / 5x5x5 une main : 18.02 minutes
6x6x6 : 8.10 minutes
7x7x7 : 16.03 minutes
9x9x9 : 58.26 minutes

megaminx : 5.59 minutes / pyraminx : 7.91 secondes / square-one : 1.07 minutes

Image
User avatar
nikitouzzModo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 42.7%
 
Posts: 1016
Images: 1
Joined: 16 Feb 2012, 18:39
Gender: Male
Calculator(s):
MyCalcs profile
Class: Fac de maths


Return to News Examens / Concours

Who is online

Users browsing this forum: No registered users and 7 guests

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
821 utilisateurs:
>765 invités
>48 membres
>8 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)