Я не могу решить эту проблему:
Вам задано 8 целых чисел:
- A, B, C представляет собой линию на плоскости с уравнением Ax + By = C
- a, b, c представляет другую строку
- x, y представляет собой точку на плоскости
Две линии не параллельны, поэтому разделите плоскость на 4 части. Точка (x, y) лежит внутри одной из этих частей.
Проблема:
Напишите быстрый алгоритм, который найдет точку с целыми координатами в той же части, что (x, y), которая ближе всего к точке пересечения двух заданных строк.
Примечание:
Это не домашнее задание, это старая Euler - задача типа, в которой я абсолютно не знаю, как подойти.
Update: Вы можете предположить, что 8 чисел на входе представляют собой 32-разрядные целые числа. Но вы не можете предположить, что решение будет 32 бит.
Обновление 2: Трудный случай - когда линии почти параллельны - суть проблемы.
Обновление 3:
Автор проблемы утверждает, что решение является линейным алгоритмом O (n). Где n - размер ввода (в битах). Ie: n = log (A) + log (B) +... + log (y)
Но я все еще не могу это решить.
Просьба указать сложности опубликованных алгоритмов (даже если они экспоненциальны).