Se necessario, ruotiamo il rettangolo in modo che la sua larghezza sia non inferiore all'altezza. Consideriamo tutte le possibili varianti di disposizione dei tre quadrati.
Caso 1. La lunghezza del lato del quadrato è pari a :
Caso 2. Se w < 3h, allora la lunghezza del lato del quadrato è pari a :
Caso 3. Se w \ge 3h, allora la lunghezza del lato del quadrato è pari a :
Resta da scegliere tra i tre casi la lunghezza massima possibile del lato del quadrato.
Se w \ge 3h, il primo e il terzo caso possono essere combinati. In tal caso la lunghezza del lato del quadrato è pari a
Se w < 3h, combiniamo il primo e il secondo caso. In questo caso la lunghezza del lato del quadrato è pari a
Implementazione dell'algoritmo
Leggiamo i dati in ingresso
scanf("%lf %lf",&w,&h);Normalizziamo il rettangolo in modo che la sua larghezza sia non inferiore all'altezza .
if (w < h)
temp = w, w = h, h = temp;Calcoliamo e stampiamo la risposta.
if (w >= 3*h) res = h;
else res = max(h/2, w/3);
printf("%.3lf\n",res);Implementazione in Java
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
double w = con.nextDouble();
double h = con.nextDouble();
if (w < h)
{
double temp = w;
w = h;
h = temp;
}
double res;
if (w >= 3*h) res = h;
else res = Math.max(h/2, w/3);
System.out.printf("%.3f\n",res);
}
}Implementazione in Python
Leggiamo i dati in ingresso
w, h = map(float, input().split())Normalizziamo il rettangolo in modo che la sua larghezza sia non inferiore all'altezza .
if w < h:
w, h = h, wCalcoliamo e stampiamo la risposta.
if w >= 3 * h:
res = h
else:
res = max(h / 2, w / 3)
print(res)