Задание №9 ЕГЭ Информатика с ответом и решением
Ответ: 303
Условие
В каждой строке электронной таблицы записаны пять целых положительных чисел. Определите, сколько в таблице строк, для которых выполнены следующие условия:
— все числа в строке различны;
— нечётных чисел больше, чем чётных;
— сумма нечётных чисел меньше суммы чётных.
В ответе запишите число — количество строк, для которых выполнены эти условия.
Подсказки — как подойти к решению
- Начни с проверки уникальности: сравни количество чисел в строке с количеством различных значений. Если они совпали, все пять чисел разные, иначе строку сразу отбрасывай и остальные условия для неё не считай.
- Дальше раздели строку на чётные и нечётные числа и проверь два независимых условия: нечётных должно быть больше по количеству, но меньше по сумме. Ловушка — перепутать знак сравнения или учесть только одно из условий.
Решение
Сначала определим, сколько раз число встречается в строке, для этого в ячейке F1 введем формулу:
=ЕСЛИ(СЧЁТЕСЛИ($A1:$E1;A1)=1;1;0)
и скопируем её во все ячейки диапазона F1:J6400. В ячейке K1 введем формулу ==СУММ(F1:J1) и скопируем её во все ячейки диапазона K1:K6400. Если значение в ячейке К равно 5, значит, все числа в строке различны.
Отдельно выпишем все четные и нечетные числа в строке.
Сначала выпишем четные числа. Для этого в ячейке L1 введем формулу:
=ЕСЛИ(ЕЧЁТН(A1)=ИСТИНА;A1;0)
и скопируем её во все ячейки диапазона L1:P6400. Данная формула вернет в ячейку значение числа если оно четное и ноль если нечетное. В столбцах от L до P мы получили только четные числа.
Теперь выпишем нечетные числа. Для этого в ячейке Q1 введем формулу:
=ЕСЛИ(НЕ(ЕЧЁТН(A1))=ИСТИНА;A1;0)
и скопируем её во все ячейки диапазона Q1:U6400. Данная формула вернет в ячейку значение числа, если оно нечетное, и ноль, если четное. В столбцах от Q до U мы получили только нечетные числа.
В столбце V посчитаем количество четных чисел. Для этого в ячейке V1 введем формулу =СЧЁТЕСЛИ(L1:P1;"<>0") и скопируем её во все ячейки диапазона V1:V6400.
В столбце W посчитаем количество нечетных чисел. Для этого в ячейке W1 введем формулу =СЧЁТЕСЛИ(Q1:U1;"<>0") и скопируем её во все ячейки диапазона W1:W6400.
В столбце X будем сравнивать количество четных и нечетных чисел. Для этого в ячейке X1 введем формулу =ЕСЛИ(W1>V1;1;0) и скопируем её во все ячейки диапазона X1:X6400. Если нечетных чисел будет больше, значение ячейки будет 1, и 0, если больше четных чисел.
В столбце Y будем сравнивать сумму четных и нечетных чисел. Для этого в ячейке Y1 введем формулу:
=ЕСЛИ(СУММ(L1:P1)>СУММ(Q1:U1);1;0)
и скопируем её во все ячейки диапазона Y1:Y6400. Если сумма нечётных чисел меньше суммы чётных значение ячейки будет 1.
В столбце Z будем проверять ячейки на удовлетворение условию задачи. Для этого надо, чтобы значение столбца K равнялось 5, а столбцы X и Y равнялись 1. Для этого в ячейке Z1 введем формулу:
=ЕСЛИ(И(K1=5;X1=1;Y1=1);1;0)
и скопируем её во все ячейки диапазона Z1:Z6400.
Окончательно с помощью формулы =СУММ(Z1:Z6400) получим ответ — 303.
Ответ: 303.
Приведём решение Ильи Андрианова на языке Python.
count = 0
for s in open('9.txt'):
M = [int(x) for x in s.split()]
if len(M) == len(set(M)): # — все числа в строке различны;
chet = [x for x in M if x % 2 == 0]
nechet = [x for x in M if x % 2 != 0]
if len(nechet) > len(chet):
if sum(nechet) < sum(chet):
count += 1
print(count)
Примечание. Файл следует сохранить в формате txt.
Приведём решение Юрия Красильникова на языке Python.
count = 0
for s in open('09.csv'):
a = list(map(int,s.split(';')))
aodd = [x for x in a if x%2==1]
if len(a) == len(set(a)) and len(aodd)>2 and 2*sum(aodd) < sum(a):
count += 1
print(count)
Примечание. Файл следует сохранить в формате csv.
Приведём решение Артёма Гридина на языке Python.
print([True if len(set(y)) == 5 and len([n for n in y if n%2 != 0]) > 3 and sum([n for n in y if n%2 != 0]) < sum([n for n in y if n%2 == 0]) else False for y in tuple(map(lambda x: sorted(tuple(map(int, x.split(';')))), open('09.csv').read().splitlines()))].count(True))
Примечание. Файл следует сохранить в формате csv.
Приведём решение Сергея Донец на языке PascalABC.NET.
uses XLSX;
begin
var a:=ReadXLSXAsInts('09.xlsx');
var k:=0;//количество строк
foreach var x in a do
if x.Distinct.Count=x.Count
then begin
var nech:=x.Where(n->n.isOdd).ToArray;
var chet:=x.Where(n->n.isEven).ToArray;
if nech.Count>chet.Count
then if nech.Sum < chet.Sum
then k+=1;
end;
Println(k);
end.
Примечание. Файл следует сохранить в формате xlsx.
Ответ: 303
Типичные ошибки
- Скорее всего, проверено только одно условие — например, количества, но не суммы, — либо в счёт попали строки с повторами. Проверяй уникальность, количество и сумму вместе и только потом увеличивай счётчик.
В тренажёре: подсказки по шагам, разбор твоей ошибки ИИ-репетитором (он не даёт готовый ответ), повторение ошибок по интервалам и общий прогресс. Все задания №9 по информатике