nik13243546576879
24.03.2020 04:00

27 на егэ(№5258 на решу егэ).

дан спи­сок точек плос­ко­сти с це­ло­чис­лен­ны­ми ко­ор­ди­на­та­ми. не­об­хо­ди­мо опре­де­лить:

1) номер ко­ор­ди­нат­ной чет­вер­ти k, в ко­то­рой на­хо­дит­ся боль­ше всего точек;

2) ко­ли­че­ство точек в этой чет­вер­ти m;

3) точку a в этой чет­вер­ти, на­и­ме­нее удалённую от осей ко­ор­ди­нат;

3) рас­сто­я­ние r от этой точки до бли­жай­шей оси.

если в не­сколь­ких чет­вер­тях рас­по­ло­же­но оди­на­ко­вое ко­ли­че­ство точек, сле­ду­ет вы­брать ту чет­верть, в ко­то­рой ве­ли­чи­на r мень­ше. при ра­вен­стве и ко­ли­че­ства точек, и ве­ли­чи­ны r не­об­хо­ди­мо вы­брать чет­верть с мень­шим но­ме­ром k. если в вы­бран­ной чет­вер­ти не­сколь­ко точек на­хо­дят­ся на оди­на­ко­вом ми­ни­маль­ном рас­сто­я­нии от осей ко­ор­ди­нат, нужно вы­брать первую по спис­ку. точки, хотя бы одна из ко­ор­ди­нат ко­то­рых равна нулю, счи­та­ют­ся не при­над­ле­жа­щи­ми ни одной чет­вер­ти и не рас­смат­ри­ва­ют­ся.

опи­са­ние вход­ных дан­ных

в пер­вой стро­ке вво­дит­ся одно целое по­ло­жи­тель­ное число - ко­ли­че­ство точек n.

каж­дая из сле­ду­ю­щих n строк со­дер­жит ко­ор­ди­на­ты оче­ред­ной точки - два целых числа (пер­вое — ко­ор­ди­на­та x, вто­рое — ко­ор­ди­на­та у).

опи­са­ние вы­ход­ных дан­ных

про­грам­ма долж­на вы­ве­сти номер вы­бран­ной чет­вер­ти k, ко­ли­че­ство точек в ней m, ко­ор­ди­на­ты вы­бран­ной точки a и ми­ни­маль­ное рас­сто­я­ние r по об­раз­цу, при­ведённому ниже в при­ме­ре.

является ли мое решение на питоне эффективным и есть ли какое-нибудь более простое решение?

собственно программа:

n = int(

coord_1 = {'m': 0, 'a': (0, 0), 'r': 100}

coord_2 = {'m': 0, 'a': (0, 0), 'r': 100}

coord_3 = {'m': 0, 'a': (0, 0), 'r': 100}

coord_4 = {'m': 0, 'a': (0, 0), 'r': 100}

coords = [coord_1, coord_2, coord_3, coord_4]

for i in range(n):

coord = input()

x, y = [int(i) for i in coord.

if x > 0 and y > 0:

coord_1['m'] += 1

if x < coord_1['r'] or y < coord_1['r']:

coord_1['r'] = min(x, y)

coord_1['a'] = (x, y)

elif x == coord_1['r'] or y == coord_1['r']:

if x + y < coord_1['a'][0] + coord_1['a'][1]:

coord_1['a'] = (x, y)

elif x < 0 and y > 0:

coord_2['m'] += 1

if abs(x) < coord_2['r'] or y < coord_2['r']:

coord_2['r'] = min(abs(x), y)

coord_2['a'] = (x, y)

elif abs(x) == coord_2['r'] or y == coord_2['r']:

if abs(x) + abs(y) < abs(coord_2['a'][0]) + coord_2['a'][1]:

coord_2['a'] = (x, y)

elif x < 0 and y < 0:

coord_3['m'] += 1

if abs(x) < coord_3['r'] or abs(y) < coord_3['r']:

coord_3['r'] = min(abs(x), abs(y))

coord_3['a'] = (x, y)

elif abs(x) == coord_3['r'] or abs(y) == coord_3['r']:

if abs(x) + abs(y) < abs(coord_3['a'][0]) + abs(coord_3['a'][1]):

coord_3['a'] = (x, y)

elif x > 0 and y < 0:

coord_4['m'] += 1

if x < coord_4['r'] or abs(y) < coord_4['r']:

coord_4['r'] = min(x, abs(y))

coord_4['a'] = (x, y)

elif x == coord_4['r'] or abs(y) == coord_4['r']:

if abs(x) + abs(y) < coord_4['a'][0] + abs(coord_4['a'][1]):

coord_4['a'] = (x, y)

k = 1; m = coord_1['m']

r = coord_1['r']; a = coord_1['a']

for i in range(1, 4):

if m < coords[i]['m'] or (m == coords[i]['m'] and r > coords[i]['r']):

k = i + 1; r = coords[i]['r']; a = coords[i]['a']

m = coords[i]['m']

print('k =', k)

print('m =', m)

print('a =', a)

print('r =', r)

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
arsjaja
23.05.2022 23:58

1 - 2, 2 - 3, 3 - 2, 4 - 3, 5 - 1, 6 - 4, 7 - 2, 8 - 3, 9 - 1, 10 - 2

Объяснение:

1. Правила доступа к информации на сервере устанавливает: администратор сервера;

2. Региональная сеть обеспечивает связь пользователей, находящихся в одном городе;

3. Телекоммуникационная технология, базирующаяся на использовании электросетей для высокоскоростного информационного обмена, — это PLC;

4. Какое устройство обеспечивает передачу цифровых компьютерных данных по каналам связи - модем

5. Количество информации, передаваемое в единицу времени называется пропускная канала.

6. Общая схема соединения компьютеров в локальной сети называется топология сети.

7. Какой топологии сети не существует - линейная шина.

8. Из чего состоит IP-адрес? - Из четырех чисел в диапазоне от 0 до 255.

9. Какими бывают домены верхнего уровня? - географические и коммерческие - TCP/IP

0,0(0 оценок)
Ответ:
DashaDoro03
28.09.2022 20:35
Я уже решал эту задачу.
Я руками за 5 дней делаю 5 коробок, и на 6-ой день покупаю духовку.
Руками и духовкой я делаю 2 коробки в день, за 5 дней - 10 коробок.
На 6-ой день я покупаю вторую духовку.
Руками и 2-мя духовками я за 5 дней делаю 15 коробок, и на 6-ой день покупаю 3-ью духовку.
И так далее. Чтобы купить очередную духовку, я работаю 5 дней, а на 6-ой день ее покупаю, и у меня печенья не остается совсем.
То есть, после покупки каждой духовки я начинаю всё с нуля.
Главное - понять, когда нужно остановиться покупать духовки и начать уже копить печенье на складе.
Итак, подведем итоги:
1) На покупку каждой духовки мы тратим 6 суток и начинаем с нуля.
2) Имея n духовок, мы делаем 584 коробок печенья за 
trunc(584/(n+1)) + 1 дней, где trunc(x) = [x] - это целая часть x. 
3) Всего мы тратим времени T(n) = 6n + trunc(584/(n+1)) + 1 --> min
Минимум функции trunc(584/(n+1)) совпадает с минимумом 584/(n+1)
T(n) = 6n + 584/(n+1) + 1 --> min
T'(n) = 6 - 584/(n+1)^2 = (6(n+1)^2 - 584) / (n+1)^2 = 0
6(n+1)^2 - 584 = 0
(n+1)^2 = 584/6 = 97,33
n + 1 = √97,33 ~ 9,86 = 10
n = 9
Значит, нужно ограничиться покупкой 9 духовок.
За 6*9 = 54 дня мы их купим, и за 584/10 ~ 59 дней мы соберем нужное количество коробок на складе.
Всего мы истратим 54 + 59 = 113 дней.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота