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

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

Ответ: 445

Условие

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

Назовём ячейку таблицы хорошей, если для неё выполняются следующие условия:

— число в данной ячейке не встречается в других ячейках этой же строки;

— число в данной ячейке ровно 45 раз встречается в других строках таблицы.

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

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

  1. Для каждой ячейки нужны две частоты: сколько раз её число встречается внутри этой же строки и сколько раз — во всей таблице. Вторую частоту считай по всем столбцам таблицы, а не по одной строке.
  2. Ловушка в формулировке: «45 раз в других строках» — это 46 вхождений во всей таблице, включая саму ячейку. И строку считай один раз, даже если в ней несколько хороших ячеек, иначе результат завышается.

Решение

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

Теперь найдем, сколько раз число встречается в таблице, в ячейку M1 впишем формулу:

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

и скопируем формулу до ячейки R6000.

Отметим хорошие ячейки, для этого введем в ячейку S1 формулу и скопируем ее до ячейки X6000:

=ЕСЛИ(И(G1=1;M1=46);1;0).

В столбце Y будем считать количество хороших ячеек в строке, для этого в ячейку Y1 введем формулу и скопируем ее до ячейки Y6000:

=СУММ(S1:X1).

В столбце Z будем считать количество строк, содержащих хорошие ячейки, для этого в ячейку Z1 введем формулу и скопируем ее до ячейки Z6000:

=ЕСЛИ(Y1>=1;1;0).

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

=СУММ(Z1:Z6000)

и получаем ответ — 445.

Ответ: 445.

Примечание. Во втором условии задачи сказано, что число в данной ячейке ровно 45 раз встречается в других строках таблицы. Это значит, что есть само число и 45 таких же чисел в других строках, всего 46.

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

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

nums = [n for line in lines for n in line]

goodlines = [line for line in lines if any([line.count(n)==1 and nums.count(n)==46 for n in line])]

print(len(goodlines))

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

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

d={}

for line in lines:

for n in line:

d[n]=d.get(n,0)+1

goodlines = [line for line in lines if any([line.count(n)==1 and d[n]==46 for n in line])]

print(len(goodlines))

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

Приведём решение Дмитрия Степоненкова на языке Python.

f = open('9.txt')

cnt = 0

d = []

b = [0]*10000

for s in f:

d.append(list(map(int, s.split())))

for i in d[-1]:

b[i]+=1

for a in d:

povt = [x for x in a if a.count(x)==1 and b[x]==46]

if len(povt)>0:

cnt +=1

print(cnt)

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

Ответ: 445

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

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

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