Aleks və origami kvadratları#7612

Aleks və origami kvadratları (Həll təhlili)

Lazım olduqda düzbucaqlını elə fırladaq ki, onun eni hündürlüyündən kiçik olmasın. Üç kvadratın yerləşməsinin bütün mümkün variantlarına baxaq.

1-ci hal. Kvadratın tərəfinin uzunluğu -dir:

2-ci hal. Əgər w < 3h olarsa, kvadratın tərəfinin uzunluğu -dür:

3-cü hal. Əgər w \ge 3h olarsa, kvadratın tərəfinin uzunluğu -dır:

Üç haldan kvadratın tərəfinin mümkün maksimum uzunluğunu seçmək qalır.

max(h / 2, h) = h
max(h / 2, w / 3)

Alqoritmin realizasiyası

Giriş məlumatlarını oxuyuruq

scanf("%lf %lf",&w,&h);

Düzbucaqlını elə normallaşdırırıq ki, onun eni hündürlüyündən kiçik olmasın.

if (w < h)
  temp = w, w = h, h = temp;

Cavabı hesablayıb çıxarırıq.

if (w >= 3*h) res = h;
else res = max(h/2, w/3);
printf("%.3lf\n",res);

Java realizasiyası

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);      
  }
}

Python realizasiyası

Giriş məlumatlarını oxuyuruq

w, h = map(float, input().split())

Düzbucaqlını elə normallaşdırırıq ki, onun eni hündürlüyündən kiçik olmasın.

if w < h:
  w, h = h, w

Cavabı hesablayıb çıxarırıq.

if w >= 3 * h:
  res = h
else:
  res = max(h / 2, w / 3)
print(res)