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)
Под отбора понимают порядок отбора единиц из генеральной совокупности. Различают два отбора: повторный и бесповторный. При повторном отборе каждая отобранная в случайном порядке единица после ее обследования возвращается в генеральную совокупность и при последующем отборе может снова попасть в выборку. Этот отбора построен по схеме «возвращенного шара». При таком отбора вероятность попасть в выборку для каждой единицы генеральной совокупности не меняется независимо от числа отбираемых единиц. При бесповторном отборе каждая единица, отобранная в случайном порядке, после ее обследования в генеральную совокупность не возвращается. Этот отбора построен по схеме «невозвращенного шара». Вероятность попасть в выборку для каждой единицы генеральной совокупности увеличивается по мере производства отбора