Формула VS бинпоиск (траблы с точностью на AtCoder)

Правка ru1, от polosatic, 2024-06-02 15:33:39

Недавно я решал эту задачу. Я свёл ее к более простой задаче: даны точки A, B, C, и надо узнать точку пересечения 2 прямых: AB и OC, где точка O — начало координат.

Код, 90/92 тестов пройдено

Сначала я написал пересечение двух прямых формулой (функция find()), и получил ВА на 2 тестах. Потом я написал это при помощи бинпоиска (функция findgood()) и получил AC. Далее я снова заслал решение с find(), добавив #define ld __float128, и оно зашло.

Кто-нибудь может объяснить, что за чертовщина тут произошла? Как формульное решение может быть менее точным, чем бинпоиск?

История

 
 
 
 
Правки
 
 
  Rev. Язык Кто Когда Δ Комментарий
en3 Английский polosatic 2024-06-02 15:34:26 0 (published)
en2 Английский polosatic 2024-06-02 15:34:01 3 (saved to drafts)
ru1 Русский polosatic 2024-06-02 15:33:39 3400 Первая редакция перевода на Русский
en1 Английский polosatic 2024-06-02 14:59:23 3382 Initial revision (published)