Sujet 3 (C)

On se propose dans cet exercice de calculer la plus grande ordonnée d'un point sur une fractale de Von Koch.

Cette fractale est construite itérative ment.

À l'initialisation on dispose d'un segment. Puis on itère le processus suivant :

  • on coupe le segment en trois sous-segments de longueurs égales,
  • on substitue au segment médian un losange équilatéral ayant pour diagonale le segment retiré.

Les fractales de Von Koch étant définies comme la courbe limite du processus itératif, on se restreint dans cet exercice à trouver une valeur approchée de cette ordonnée maximale.

Limites de temps et de mémoire (Python)

  • Temps : 1 s sur une machine à 1 GHz.
  • Mémoire : 16 000 ko.

Entrée

Le programme prend en entrée 5 valeurs flottantes séparées par des retours à la ligne, soit dans l'ordre :

  • l'abscisse du premier point du segment de départ,
  • l'ordonnée du premier point du segment de départ,
  • l'abscisse du second point du segment de départ,
  • l'ordonnée du second point du segment de départ,
  • la précision du résultat attendu.

Sortie

La sortie du programme est l'ordonnée du point le plus haut, arrondie à la précision donnée par la dernière entrée.

Exemples

Exemple 1

entrée :

0
0
5
0
0.00001

sortie :

1.44338

Exemple 2

entrée :

5
0
0
0
0.00001

sortie :

1.44338

Exemple 3

entrée :

0
0
1
25
0.001

sortie :

25.0

Commentaires

Squelettes de codes :

(* Ce fichier contient tout ce qu'il faut pour lire les donnees en entree, les
mettre dans des variables, et afficher votre resultat final en sortie. *)

(* on recupere les coordonnees des points dans x0, y0, x1 et y1 *)
let init_x0 = float_of_string (input_line stdin);;
let init_y0 = float_of_string (input_line stdin);;
let init_x1 = float_of_string (input_line stdin);;
let init_y1 = float_of_string (input_line stdin);;
(* on recupere la précision maximale *)
let prec = float_of_string (input_line stdin);;

let affiche_solution i =
   let res = (((ceil(i /. prec))) *. prec) in
	print_float res;
	print_newline()
;;

(* Mettez apres ceci le corps de votre programme *)
(* N'oubliez pas de terminer par un appel a affiche_solution !*)

(* Debut de votre programme *)


(* Fin de votre programme *)


Source : https://www.france-ioi.org/