Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Алгоритмы
Курсы ККДП
Дистрибутивы
Ссылки

HotLog


 

Две окружности

(Время: 1 сек. Память: 16 Мб Сложность: 17%)
Две окружности

Для начала определимся с тем, что нам известны радиусы окружностей и они равны r1 и r2. Так же по формуле расстояния между точками мы можем вычислить расстояние между центрами данных окружностей:

r = sqrt( (x2-x1)2 + (y2-y1)2 )

Заметим так же, что окружности будут пересекаться тогда и только тогда, когда возможен треугольник со сторонами r1, r2 и r. Фигуру, две стороны которой лежат на третьей или одна из сторон имеет нулевую длину так же будем считать треугольником, т.к. окружности могут друг друга касаться(r=r1+r2), либо полностью совпадать (r=0).

Треугольник считается возможным если сумма двух любых его сторон не меньше третьей. Т.е. в нашем случае достаточно проверить, что r1+r2>=r и r+r2>=r1 и r+r1>=r2. При этом желательно использовать вещественные типы данных. Так же можно провести аккуратное сравнение с учетом возможных погрешностей при вычислениях.


[Обсуждение] [Все попытки] [Задача]


Красноярский краевой Дворец пионеров, (c)2006 - 2017, ICQ: 151483