Сыр для Анфисы
Готовя обед для Анфисы — символа 2008 года, хозяин использовал для разрезания сыра специальный нож, который разрезал сыр на одинаковые прямоугольные паралелепипеды с основанием в виде квадрата со стороной [latex]a[/latex] и высотой [latex]b[/latex].
Но Анфиса, как и подобает даме года, любила употреблять сыр несколько меньших размеров, для чего она всегда разрезала предложенный кусочек деликатеса на две части, предварительно установив его строго вертикально квадратом к столу. При разрезании нож всегда размещался по диагонали квадрата, но Анфисе не всегда удавалось разрезать кусочек пополам, так как плоскость лезвия ножа образовывала двугранный угол [latex]z^o[/latex] с плоскостью основания.
Найти площадь [latex]s[/latex] созданного Анфисой сечения.
Входные данные
Целые числа [latex]a[/latex], [latex]b[/latex], [latex]z[/latex], не превышающие [latex]90^o[/latex].
Выходные данные
Площадь [latex]s[/latex] образованного сечения с точностью до трех десятичных знаков.
Тесты
# | ВХОДНЫЕ ДАННЫЕ | ВЫХОДНЫЕ ДАННЫЕ |
---|---|---|
1 | [latex]2[/latex] [latex]3[/latex] [latex]90[/latex] | [latex]8.485[/latex] |
2 | [latex]2[/latex] [latex]4[/latex] [latex]0[/latex] | [latex]0.000[/latex] |
3 | [latex]1[/latex] [latex]2[/latex] [latex]3[/latex] | [latex]0.501[/latex] |
4 | [latex]1[/latex] [latex]1[/latex] [latex]100[/latex] | [latex]1.615[/latex] |
5 | [latex]3[/latex] [latex]10[/latex] [latex]48[/latex] | [latex]6.725[/latex] |
Код программы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
import java.util.Scanner; import java.lang.Math; class Main { public static void main (String[] args) throws java.lang.Exception { double a, b, z, s; Scanner scan = new Scanner(System.in); a = scan.nextDouble(); b = scan.nextDouble(); z = scan.nextDouble(); if ((1 / (Math.tan (z * Math.PI / 180)) > a / Math.sqrt(2) / b) && (z != 0) && (z != 90)){ s = a * a / 2 / Math.cos (z * Math.PI / 180); } else if (z == 0) { s = 0; } else if (z == 90) { s = a * b * Math.sqrt(2); } else { s = (a * Math.sqrt(2) - b * 1 / (Math.tan (z * Math.PI / 180))) * b / Math.sin (z * Math.PI / 180); } System.out.printf("%.3f", s); } } |
Решение задачи
Для решения данной задачи нам нужно рассмотреть 4 случая:
1) Если [latex]\cot[/latex] заданного угла не будет превышать [latex]\frac{a} {\sqrt{2} \cdot b}[/latex] и также не будет равен [latex]0^o[/latex] и [latex]90^o[/latex], то фигурой сечения получится треугольник. Его площадь мы сможем найти по формуле [latex]s = \frac {a^{2}} {2 \cos (z \cdot \frac {\pi} {180})}[/latex].
2) Заданный угол = [latex]0^o[/latex], следовательно площадь сечения также будет = 0, так как сыр нормально и не порежут.
3) Заданный угол = [latex]90^o[/latex], фигурой сечения будет прямоугольник, площадь которого мы сможем найти по формуле [latex]s = a \cdot b \cdot \sqrt{2}[/latex].
4) В любом другом случае, получится трапеция, площадь которой мы найдем по формуле [latex]s = \frac {a \cdot \sqrt{2} — b \cdot 1} {tan(z \cdot \frac{\pi}{180})} \cdot \frac {b} {sin (z \cdot \frac {\pi}{180})}[/latex].
Ссылки
• Задача на e-olymp.
• Решение на сайте ideone.