Предложу следующий подход к решению задачи 2.
I. Рассмотрим небольшую вспомогательную задачку.
Дана окружность
. Ее касаются две окружности
и
(в точках
и
соответственно). Сами окружности
и
между собой также касаются (в точке
).
Требуется найти следующие величины:
- длина отрезка
, то есть расстояние между точками касания,
- длина дуги
окружности
.
Сначала найдем
. По теореме косинусов из треугольника
найдем
, подставим в теорему косинусов для треугольника
и выразим
. Получим
Зная хорду, нетрудно найти и дугу:
II. Пусть теперь у нас есть все та же окружность
, но ее касается набор других окружностей с радиусами
,
, и все эти окружности последовательно касаются друг друга (как в условии задачи, то есть нулевая касается первой, первая касается второй, ..., последняя касается нулевой).
Если вся эта конструкция собралась правильно, и последняя окружность смогла коснуться нулевой, будет выполняться условие
то есть, посчитав все попарные дуги между точками касания на окружности
, мы получим всю длину этой окружности.
Если мы выберем радиус
слишком маленьким, то выражение
окажется больше длины окружности
. Если мы выберем радиус r слишком большим, то выражение
будет наоборот меньше длины окружности
. Таким образом, искомый радиус - корень следующего уравнения:
Аналитически решить такое уравнение не берусь, но численно оно решается без проблем.
III. Определение порядка касания окружностей.
Как уже было отмечено в теме, значение искомого радиуса существенно зависит от порядка, в котором расположены окружности с радиусами
. На тему определения порядка требуется некое строгое обоснование, однако полный перебор всех вариантов расположения окружностей показывает, что оптимальным вариантом является жадное расположение, при котором мы сначала пытаемся расположить рядом окружности с наибольшей разницей в радиусах.
Например:
Пусть даны радиусы
. Наибольшая разница в радиусах это
, расположим и рядом. Следующая максимальная разница, которую мы можем получить это
, располагаем
с другой стороны от
(на этом этапе число
выбывает, так как окружено с двух сторон). Следующая максимальная разница это
, располагаем
рядом с
. И так далее, получим следующую оптимальную перестановку:
.
P.S. На диких конфигурациях это может не работать. Например, если мы расположим последовательно окружности с радиусами
, то конечно у крайних двух двух между собой будет конфликт.