Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиПоискОблакоVK ComboВсе проекты

На С++ или Питон.

Ирина Ученик (166), на голосовании 2 месяца назад
Симметричные точки
Маленький мальчик Кирилл увлекается математикой. Сегодня он узнал про координатную плоскость! После школы ему стало скучно, поэтому он решил развлечься. Кирилл нарисовал несколько точек, затем нарисовал еще одну точку C и отразил все нарисованные точки относительно нее, после чего стер точку C . Все точки, которые были нарисованы мальчиком, имеют целочисленные координаты. Также Кирилл не рисовал никакие две точки в одном месте. Вам требуется понять, действительно ли существует подходящая точка C , или Кирилл вас обманывает.
Дополнен 3 месяца назад
Формат входных данных
Первая строка содержит одно целое число n
(2≤n≤100000
) —количество нарисованных точек на плоскости. Гарантируется, что n
четно.

Каждая из следующих n
строк содержит два целых числа xi
и yi
(−109≤xi,yi≤109
) — координаты очередной нарисованной точки на плоскости. Гарантируется, что все точки попарно различны.

Формат выходных данных
Если Кирилл вас обманывает, и подходящей точки C
не существует, выведите No.

В противном случае в первой строке выведите Yes, а во второй строке выведите координаты подходящей точки C
.
Голосование за лучший ответ
Александор Заградский Мудрец (11521) 3 месяца назад
 Конечно, вот пример кода на Python, который проверяет, существует ли подходящая точка C для заданных точек: 

```python
points = [(1, 2), (3, 4), (5, 6)] # список заданных точек

# Перебираем все возможные пары точек
for i in range(len(points)):
for j in range(i+1, len(points)):
x, y = points[i] # координаты первой точки
x_, y_ = points[j] # координаты второй точки

# Вычисляем координаты точки C
a = (x + x_) / 2
b = (y + y_) / 2

# Проверяем, существует ли отраженная точка для каждой из заданных точек
found = True
for k in range(len(points)):
if k == i or k == j:
continue
x_k, y_k = points[k]
x_k_, y_k_ = 2*a - x_k, 2*b - y_k
if (x_k_, y_k_) not in points:
found = False
break

# Если для всех заданных точек существует отраженная точка, выводим координаты точки C
if found:
print(f"Подходящая точка C: ({a}, {b})")
break

if found:
break

if not found:
print("Подходящей точки C не существует")
```

Здесь мы перебираем все возможные пары заданных точек, вычисляем координаты точки C и проверяем, существует ли отраженная точка для каждой из заданных точек. Если для всех заданных точек существует отраженная точка, выводим координаты точки C. Если такой точки не существует, выводим сообщение об этом.
Володя МолонокиУченик (101) 3 месяца назад
не проходит
Александор Заградский Мудрец (11521) Володя Молоноки, кто что больше инфы
Professional Professional Мудрец (14332) 3 месяца назад
Задача сводится к поиску среднего арифметического всех координат (x, y). Если все точки симметричны относительно точки C, то точка C должна быть в точности в середине между каждой парой симметричных точек. Это можно проверить, вычислив среднее значение всех координат x и y.

Решение на Python может выглядеть так:

 python 

def check_symmetry(points):

# Количество точек должно быть четным

if len(points) % 2 != 0:

return "Нет, не существует подходящей точки C"

# Расчет средних значений координат

x_mean = sum(point[0] for point in points) / len(points)

y_mean = sum(point[1] for point in points) / len(points)

# Проверка, что все точки являются парой симметричных точек относительно C

for point in points:

symmetric_point = [2*x_mean - point[0], 2*y_mean - point[1]]

if symmetric_point not in points:

return "Нет, не существует подходящей точки C"

return f"Да, существует подходящая точка C с координатами ({x_mean}, {y_mean})"

points = [[1, 1], [3, 3], [5, 1], [3, -1]] # Пример списка точек

print(check_symmetry(points))


Этот код сначала проверяет, что количество точек четное. Затем он вычисляет средние значения координат x и y. Наконец, он проверяет, что для каждой точки в списке существует точка, симметричная ей относительно C. Если для всех точек существует симметричная пара, программа возвращает координаты точки C. В противном случае она сообщает, что подходящей точки C не существует.
Володя МолонокиУченик (101) 3 месяца назад
не проходит
Похожие вопросы