Квадрат дистанции между кварталами

тема: Геометрия (формулы) · уровень: базовый

Условие

В городе координатная сетка: каждый квартал имеет целые координаты (x, y). Навигатор для быстрых прикидок не считает корень, а сравнивает маршруты по квадрату расстояния по прямой.

Найдите квадрат евклидова расстояния между двумя кварталами A и B.

Важно: результат может не помещаться в 32-битный тип (как на ВсОШ), используйте 64-битные целые. В Python это не проблема.

Формат ввода

Одна строка: четыре целых числа x1 y1 x2 y2 — координаты кварталов A(x1, y1) и B(x2, y2).

Формат вывода

Выведите одно целое число — квадрат расстояния между A и B.

Ограничения

Пример

Ввод:

0 0 3 4

Вывод:

25

Как решать — идея подхода

Приём: Формула расстояния без корня

Ключевое наблюдение: навигатор сравнивает не само расстояние, а его квадрат, поэтому корень считать не нужно. Квадрат евклидова расстояния между точками A(x1, y1) и B(x2, y2) равен сумме квадратов разностей по осям.

Почему это работает: по теореме Пифагора длина гипотенузы в прямоугольном треугольнике с катетами dx и dy равна sqrt(dx*dx + dy*dy). Если нам нужен квадрат длины, корень «убирается» сразу.

План решения:

Мини-сниппет с формулой:

Сложность: O(1) по времени и O(1) по памяти.

Частая ошибка: пытаться считать обычное расстояние через корень и потом возводить обратно в квадрат (можно получить вещественные числа и ошибки округления). Здесь нужны только целые операции.

Разберись руками

Квартал A находится в точке (0, 0), а квартал B — в точке (3, 4). Навигатор сравнивает не само расстояние, а его квадрат, чтобы не считать корень.

Идея: Сначала находишь, на сколько точки отличаются по x и по y (это два “катета” на сетке). Потом возводишь каждый из этих сдвигов в квадрат и складываешь — получаешь квадрат расстояния без корня.

Решить задачу с автопроверкой на Python →

Куда дальше