Examen 2016 Question 2

Examen 2016 Question 2

par Leonardo Barberi,
Number of replies: 2

Salut,

Comment je peux calculer quelle est la nombre (dans le pire des cas) des instructions à faire pour la deuxieme boucle conditionnelle?  


Merci

In reply to Leonardo Barberi

Re: Examen 2016 Question 2

par Jean-Cédric Chappelier,

Heu... dans la question 2 de l'examen 2016 :

[image]
il n'y a pas de « boucle conditionnelle »...
J'ai donc du mal à comprendre précisément la question.

CECI dit, je sais que cette question pose des questions... C'était, pour moi, LA question difficile de l'examen.

Ce qu'il faut faire c'est regarder un peu ce qui se passe : si m <= n^2 alors on rappelle le même algorithme avec un nouvel n qui est m^2 + 1 et un nouvel m qui est n^2 ; mais on sait aussi que m >= n ici car sinon on serait sorti juste avant.
Comme m >= n , m^2 + 1 >= n^2 + 1 donc  nouvel n > nouvel m donc : sortir 21.
C'est donc un cas « assez facile ».

Le cas le plus dur est la dernière ligne.
Que l'on atteint qui si m >= n  et m > n^2 ; dont on ne peut garder que la dernière condition (puisque pour les entiers n <= n^2).
Dans ce cas, on appelle :

  • algo(n + m, n) : le nouvel n vaut n+m et le nouvel m est n ;
    comme m > n^2, nécessairement m >= 1 et donc n+m > n et donc nouvel n > nouvel m et donc : sortir 21
  • algo(n + m, n^2 + m^2) : le nouvel n vaut n+m et le nouvel m est n^2 + m^2 ;
    comme n^2 + m^2 >= n + m ; on ne va pas dans le 1er cas;
    quid de nouvel m par rapport à (nouvel n)^2 ; c.-à-d. n^2 + m^2 par rapport à (n+m)^2 = n^2 + m^2 + 2nm ?
    -> de nouveau : cas 2 donc au final sortir 21

Je vous laisse conclure.