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

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

Ответ: 2102

Условие

В каждой строке электронной таблицы записаны шесть натуральных чисел.

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

— в строке есть как повторяющиеся, так и неповторяющиеся числа;

— среднее арифметическое всех неповторяющихся чисел строки больше, чем среднее арифметическое всех повторяющихся чисел этой строки.

При вычислении средних значений каждое число учитывается столько раз, сколько оно встречается в строке.

В ответе запишите число — количество строк, для которых выполнены эти условия.

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

  1. Отметь, какие числа строки повторяются, а какие встречаются один раз; нужны строки, где есть и те, и другие. Строки только из повторов или только из уникальных значений не подходят, даже если неравенство для них выполнено.
  2. Средние считай с учётом кратности: каждое повторяющееся число входит в свою сумму столько раз, сколько встречается. Поэтому дели на количество элементов, а не на количество различных значений.

Решение

Для начала посчитаем, сколько раз встречается то или иное число в строк, для этого в ячейку G1 впишем =СЧЁТЕСЛИ($A1:$F1; A1) и растянем до ячейки L1 и вниз, до самого конца таблицы. Теперь найдем количество удовлетворяющих нас строк, впишем

=ЕСЛИ(И(СУММ(G1:L1)>6; ИЛИ(G1=1; H1 = 1; I1 = 1; J1 = 1; K1 = 1; L1 = 1)); 1; 0)

в ячейку M1.

Найдем теперь среднее арифметическое повторяющихся и неповторяющихся чисел. В ячейку N1 вписываем:

=ЕСЛИ(G1 = 1; A1; " ")

и протягиваем до S1 и до конца таблицы. В ячейку T1 записываем:

=ЕСЛИ(M1 = 1; СРЗНАЧ(N1:S1);" ").

Аналогично находим среднее арифметическое для повторяющихся чисел (для них =ЕСЛИ(G1 > 1; A1; " ")).

Окончательно находим количество искомых строк. Для этого в ячейку AB1 записываем следующее:

=ЕСЛИ(T1 > AA1; 1; " ")

и протягиваем до конца таблицы. Находим сумму с помощью формулы =СУММ(AB1:AB6400) и получаем ответ — 2102.

Ответ: 2102.

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

count = 0

for s in open('9.txt'):

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

A = [x for x in M if M.count(x) > 1]

B = [x for x in M if M.count(x) == 1]

if len(B) > 0 and len(A) > 0:

if (sum(B) / len(B)) > (sum(A) / len(A)):

count += 1

print(count)

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

Примечание 2. В файле приведенного задания СтатГрад используются нули, что противоречит определению «натуральные числа». Данная опечатка не влияет на ответ.

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

f = open('09.txt')

cnt = 0

for i in f:

a = list(map(int,i.split()))

if len(a) != len(set(a)):

sr1 = 0

k1 = 0

sr2 = 0

k2 = 0

for j in range (0,len(a)):

if a.count(a[j]) == 1:

sr1 += a[j]

k1 += 1

else:

sr2 += a[j]

k2 += 1

if k1!=0 and k2!=0:

if (sr1/k1)>(sr2/k2):

cnt += 1

print(cnt)

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

# Необходимо предварительно сохранить данные из таблицы LibreOffice Calc

# в файл .csv с разделителем ';'

ответ = 0

for строка in open('9.csv'):

числа = list(map(int, строка.split(';')))

повторы = [x for x in числа if числа.count(x) > 1]

уникумы = [x for x in числа if числа.count(x)==1]

if повторы and уникумы and sum(уникумы)/len(уникумы) > sum(повторы)/len(повторы):

ответ += 1

print(ответ)

Ответ: 2102

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

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

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