πЕГЭ · ИИ-репетитор12 предметов · задания ФИПИ
Главная → Информатика → Задания №9 → Задание i09-10

Задание №9 ЕГЭ Информатика с ответом и решением

Ответ: 853

Условие

Откройте файл электронной таблицы, содержащей в каждой строке пять натуральных чисел.

Определите количество строк таблицы, содержащих числа, для которых выполнены оба условия:

— каждое число в строке встречается по одному разу,

— утроенная сумма максимального и минимального значений не превышает удвоенной суммы оставшихся чисел.

В ответе запишите только число.

Подсказки — как подойти к решению

  1. Сначала отбрось строки с повторами: сравни число элементов строки с числом различных значений. Только для строк без повторов считай максимум, минимум и сумму — так ты не потратишь время на заведомо неподходящие данные.
  2. Оставшиеся числа — это сумма строки без максимума и минимума, не включай их туда повторно. И помни, что «не превышает» — нестрогое сравнение: строка, где части оказались равны, тоже подходит.

Решение

Сначала будем проверять, сколько раз в строке встречается число. Для этого в ячейку F1 запишем формулу:

=СЧЁТЕСЛИ($A1:$E1;A1)

и скопируем её во все ячейки диапазона F1:J3200.

В ячейке К1 запишем формулу =СУММ(F1:J1). Если число в ячейке равно 5, то в ряду все числа встречаются один раз. Скопируем формулу во все ячейки диапазона К1:К3200.

В ячейке L1 посчитаем утроенную сумму максимального и минимального значений. Для этого в ячейку L1 запишем формулу:

=ЕСЛИ(K1=5;3*(МАКС(A1:E1)+МИН(A1:E1));0)

и скопируем её во все ячейки диапазона L1:L3200.

В ячейке M1 посчитаем удвоенную сумму оставшихся чисел. Для этого в ячейку M1 запишем формулу:

=ЕСЛИ(K1=5;2*(СУММ(A1:E1)-МАКС(A1:E1)-МИН(A1:E1));0)

и скопируем её во все ячейки диапазона M1:M3200.

В ячейке N1 будем выписывать 1, если ряд подходит под условие задачи, и 0, если не подходит. Для этого в ячейку N1 запишем формулу:

=ЕСЛИ(K1=5;ЕСЛИ(L1<=M1;1;0);0)

и скопируем её во все ячейки диапазона N1:N3200.

Окончательно с помощью формулы =СУММ(N1:N3200) получим ответ — 853.

Ответ: 853.

Приведём решение Евгения Джобса на языке Python.

with open('09.csv') as f:

# если просто копировать и вставить

# можно не делать замену (replace)

# сортировка сразу для удобства

nums = [sorted(map(int, s.replace(';', ' ')

.split()))]

for s in f]

cnt = 0

for t in nums:

if len(set(t)) == len(t) \

and 3*(t[0]+t[-1]) <= 2*sum(t[1:4]):

cnt += 1

print(cnt)

Приведём решение Евгения Джобса (через НАИБОЛЬШЕЕ/НАИМЕНЬШЕЕ).

Суть этого решения в первоначальном упорядочивании элементов строки.

Так, вписав формулы

=НАИБОЛЬШИЙ(A1:E1, 1), =НАИБОЛЬШИЙ(A1:E1, 2),

=НАИБОЛЬШИЙ(A1:E1, 3), =НАИБОЛЬШИЙ(A1:E1, 4), =НАИБОЛЬШИЙ(A1:E1, 5)

в ячейки F1:J1 соответственно, получим пять чисел, идущих в порядке убывания. Где значение в F1 будет максимальным значением, значение в J1 — минимальным.

Теперь для проверки одинаковости (уникальности) чисел достаточно сравнить только пары рядом стоящих чисел.

Для первой строки формула:

=И(F1>G1;G1>H1;H1>I1;I1>J1).

Для проверки второго условия: сумма максимума и минимума — F1 + J1, сумма трех оставшихся — СУММ(G1:I1).

Значит, формула будет выглядеть как:

= 3*(F1+J1)<=2*СУММ(G1:I1).

Для проверки совпадения двух условий так же воспользуемся формулой с умножением =K1*L1. Для нахождения ответа — =сумм(M:M).

Приведём решение Михаила Глинского на языке Python.

count = 0

f = open('09.txt')

for s in f:

m = [int(x) for x in s.split() ]

m.sort()

if len(set(m))==5 and 3*(m[0]+m[-1]) <= 2*(sum(m)-(m[0]+m[-1])):

count += 1

print(count)

Примечание. Файл следует сохранить в формате txt.

Приведём решение Юрия Красильникова на языке Python.

a = [list(map(int,s.split(';'))) for s in open('09.csv')]

print(len([x for x in a if len(x) == len(set(x)) and 5*(max(x) + min(x)) <= 2*sum(x)]))

Примечание. Файл следует сохранить в формате csv.

Типичные ошибки

Решить это задание в тренажёре

В тренажёре: подсказки по шагам, разбор твоей ошибки ИИ-репетитором (он не даёт готовый ответ), повторение ошибок по интервалам и общий прогресс. Все задания №9 по информатике