Задача к ЕГЭ по информатике на тему «Количество строк, удовлетворяющих условию» №3

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

– в строке есть одно число, которое повторяется трижды, остальные четыре числа различны;

– Для нечетных чисел строки определяются и суммируются противоположные числа, модуль такой суммы должен быть меньше минимального числа в строке

Примечание: Противоположное число по отношению к числу n — это число, которое при сложении с n даёт 0.

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

Решение Excel

Откроем файл электронной таблицы и для начала в ячейку H1 запишем следующую формулу для определения повторяемости и растянем до ячейки N1:

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

В ячейке O1 запишем формулу для определения выполнения первого условия:

=ЕСЛИ(И(СЧЁТЕСЛИ(H1:N1;”=3”)=3;СЧЁТЕСЛИ(H1:N1;”=1”)=4);1;0)

В ячейку P1 запишем следующую формулу для определения четности и растянем до ячейки V1. Сразу найдём противоположные числа, домножив на -1:

=ЕСЛИ(ОСТАТ(A1;2)=1;-A1;0)

В ячейке W1 запишем формулу для определения выполнения второго условия:

=ЕСЛИ(ABS(СУММ(P1:V1))<МИН(A1:G1);1;0)

В ячейке X1 определим выполняются ли оба условия для строки, для этого воспользуемся формулой:

=O1*W1

Растянем все формулы на все строки таблицы и остается только посчитать сумму по столбцу X, это и будет ответом – 1.

Решение на Python

f = open("9.txt")  # Открываем файл расширения txt

a = [list(map(int, line.split())) for line in f]  # Считывание строк чисел в файле
lines_count = 0  # Счётчик для количества подходящих под условие строк

for line in a:  # Перебираем строки - списки из 7 чисел

    uniq = [x for x in line if line.count(x) == 1]  # Список неповторяющихся чисел в строке
    opposite_nums_sum = sum(-x for x in line if x % 2 == 1)  # Сумма противоположных чисел для нечётных чисел строки
    mn = min(line)  # Минимальное число строки
    sr = sum(line) / 4  # Среднее арифметическое строки

    cond1 = (len(uniq) == 4)  # Ровно четыре числа различны, тогда оставшиеся три - повторение одного числа трижды
    cond2 = (abs(opposite_nums_sum) < min(line))  # Второе условие

    if cond1 and cond2:  # Все условия выполняются
        lines_count += 1  # Увеличиваем счётчик на 1

print(lines_count)  # Выводим ответ

Ответ: 1
Оцените статью
Я решу все!