Сперва поймем, что треугольник ABC - остроугольный (если он прямоугольный. то хотя бы одна из точек M, N совпадет с какой-нибудь вершиной, а если тупоугольный - M и N попросту не будет, окружность будет пересекать стороны только в точках D и E)
Сначала решим в лоб: можно найти все углы в треугольнике. Дальше, ввиду подобия треугольников, узнаем углы EDC и DEC. Так как треугольники ODN, OME равнобедренные, можно найти углы EOM и DON, а значит, и NOM. Наконец, зная ON, OM и угол между ними, по теореме косинусов найдется NM.
Попробуем реализовать.
cos A = (-a^2 + b^2 + c^2)/2bc
cos B = (a^2 - b^2 + c^2)/2ac
cos NOD = cos(180 - 2A) = -cos(2A) = 1 - 2cos^2 A
sin NOD = sqrt(1 - cos^2 NOD) = 2 sqrt(cos A - cos^2 A)
cos MOE = 1 - 2cos^2 B
sin MOE = sqrt(1 - cos^2 MOE) = 2 sqrt(cos B - cos^2 B)
cos MON = cos(180 - (NOD + MOE)) = -cos(NOD + MOE) = sin NOD sin MOE - cos NOD cos MOE = 4 sqrt((cos A - cos^2 A)(cos B - cos^2 B)) - (1 - 2cos^2 A)(1 - 2cos^2 B)
MN = с/4 * sqrt(1 - cos MON)
При наличии некоторого терпения можно подставить вместо угла всё то, что насчиталось по ходу рассуждений, и получить "симпатичный" ответ
MN = c(a^2 + b^2 - c^2)/4ab
Теперь попробуем угадать хорошее решение (без издевательских выкладок). a^2 + b^2 - c^2 - по теореме косинусов это 2ab cos C, так что MN = c * 2ab cos C / 4ab = c/2 * cos C.
Вспомним, что угол, образованный секущими, пересекающимися вне круга, равен половине разности дуг, заключенных между сторонами. Тогда C = (180 - MON)/2, MON = 180 - 2C. MN = 2 * OM * sin (MON/2) = 2 * c/4 * sin (90 - C) = c/2 * cos(C), ч.т.д.