ML38. Максимальный размер прямоугольника, вырезанного из круга

Задача. Какого наибольшего размера прямоугольник можно вырезать из круга диаметра [latex]d[/latex], если известно, что длины его сторон образуют золотую пропорцию.

Входные данные: 

Единственное число — диаметр окружности.

Выходные данные:

Два числа — длины сторон прямоугольника.

ml38

Тесты.

Входные данные Выходные данные
[latex]d[/latex] [latex]a[/latex] [latex]b[/latex]
1 0 0 0
2 1 0.850651 0.525731
3 2 1.7013 1.05146
4 21 17.8638 11.0404
5 0.32 0.272208 0.168234
6 1.7 1.44611 0.893743
7 134 113.981 70.448

Код программы на C++.

Код программы на Java.

Решение.

Прямоугольник будет иметь наибольший размер в случае, когда его вершины лежат на окружности. Тогда, очевидно, диаметр окружности будет диагональю данного прямоугольника. Согласно условию, длины его сторон образуют золотую пропорцию. Это означает, что [latex]\frac { a }{ b } =\phi [/latex], где [latex]a[/latex] — длина большей стороны прямоугольника, [latex]b[/latex] — длина его меньшей стороны, а [latex]\phi=\frac { 1+\sqrt { 5 } }{ 2 } [/latex]. Отсюда [latex]a=b\cdot \phi[/latex]. По теореме Пифагора, [latex]{ a }^{ 2 }+{ b }^{ 2 }={ d }^{ 2 }[/latex]. Путём подстановки из предыдущего выражения и простых алгебраических преобразований получим формулу для вычисления длины меньшей стороны: [latex]b=d\cdot \sqrt { \frac { 1 }{ { \phi }^{ 2 }+1 } } [/latex].
Сначала для удобства находим значение [latex]\phi[/latex], затем — по указанным формулам длины сторон прямоугольника.

Ссылка на код на ideone.com: здесь (C++) и здесь (Java).

5 thoughts on “ML38. Максимальный размер прямоугольника, вырезанного из круга

  1. Очень хорошо получилось для первой работы. Конечно, нужно немного подправить.
    — У Вас описка в формуле теоремы Пифагора.
    — SVG чертёж лучше делать в текстовом редакторе, предварительно рассчитав на листике бумаги координаты всех пяти точек. Это всего десять чисел. После этого останется записать команды рисования одной окружности и пяти отрезков (или одной ломанной). Тогда и код рисунка будет в сотню раз короче, и не будет таких странностей, когда диагональ не попадает в вершину, а вершина не попадает на окружность. Да! Буквы нужно делать в курсиве (наклонными), тогда они будут выглядеть, так как в тексте. Ну и заодно уж откорректируйте размер, чтобы не было большого пустого поля снизу.

  2. Молодец! Очень хорошо. Но пока не идеально.
    — Вынесите квадрат из под корня в формуле, которую вывели.
    — Уберите точку в названии.
    — __trashed-2 не самое удачное название для постоянной ссылки. Т.е. можно так и оставить, но лучше исправить.
    — окружность вплотную примыкает к границам рисунка — стоит сдвинуть всё на десяток пикселей вниз и вправо. Т.е. можно так и оставить, но лучше исправить.

Добавить комментарий