Жомарт любит наблюдать за звездами и создавать из них различные геометрические фигуры. Небо предоставляется в виде декартовой системы координат, а звезды на ней точками. На этот раз Жомарта интересует вопрос, сколько различных прямоугольных треугольников, у которого катеты параллельны осям координат, можно составить с помощью звезд на небе — Python(Питон)

Формат входного файла
В первой строке задается N — количество звезд на небе (3 <= N <= 300000). В каждой из следующих N строк заданы целые X, Y (|X, Y| <= 109) — координаты соответствующей звезды.
Формат выходного файла
Выведите ответ к задаче.

Примеры
Входные данные
3
0 0
1 0
0 1
Выходные данные
1
Входные данные
4
0 0
1 0
0 1
1 1
Выходные данные
4

Чтобы решить эту проблему, мы можем перебрать все пары звездочек и подсчитать количество прямоугольных треугольников, катеты которых параллельны осям координат. Вот функция Python, которая выполняет это:

def count_right_triangles(stars):
    count = 0
    n = len(stars)
    for i in range(n):
        for j in range(i+1, n):
            x1, y1 = stars[i]
            x2, y2 = stars[j]
            if (x1 == x2) or (y1 == y2):
                count += 1
    return count

# Example usage
stars = [(0, 0), (1, 0), (0, 1), (1, 1), (2, 2)]
result = count_right_triangles(stars)
print(f"The number of right triangles with legs parallel to the coordinate axes is: {result}")

В этом примере функция count_right_triangles принимает входные данные stars, которые представляют собой список координат (x, y), представляющих звезды на небе.

Мы инициализируем переменную count, чтобы отслеживать количество прямоугольных треугольников. Мы перебираем все пары звездочек, используя вложенные циклы. Для каждой пары звездочек (x1, y1) и (x2, y2) мы проверяем, равны ли координаты x или y. Если это так, это означает, что звезды могут образовывать прямоугольный треугольник со сторонами, параллельными осям координат.

Если условие выполнено, мы увеличиваем количество на 1.

Наконец, мы возвращаем количество в качестве результата.

В примере использования мы определяем список звездочек с их соответствующими координатами (x, y). Мы вызываем функцию count_right_triangles со звездами в качестве входных данных и сохраняем результат в переменной result. Наконец, мы выводим количество прямоугольных треугольников, которые могут быть сформированы с использованием звездочек с катетами, параллельными осям координат.

Вы можете изменить список звездочек в примере использования, чтобы протестировать функцию с различными наборами звездочек.

Leave a Comment