🎉 Добавлен материал по 9 заданию
ЕГЭ
Задания
Задание 9
17863

Задание 17863

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

  • в строке только одно число повторяется трижды, остальные числа различны;
  • квадрат суммы всех повторяющихся чисел строки больше квадрата суммы всех её неповторяющихся чисел.

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

Файл (opens in a new tab)

Решение

z17863.py
f = open("9_17863.csv")
 
count = 0
 
for line in f:
    a = list(map(int, line.strip().split(';')))
 
    not_repeat = [x for x in a if a.count(x) == 1]
    repeat = [x for x in a if a.count(x) == 3]
 
    if len(repeat) == 3 and len(not_repeat) == 3 and (sum(repeat) ** 2 > sum(not_repeat) ** 2):
        count += 1
 
print(count)

Разбор кода

Давайте разберем решение пошагово:

💡

Для решения задачи нам нужно проверить два условия для каждой строки:

  1. Одно число повторяется трижды, остальные различны
  2. Квадрат суммы повторяющихся чисел больше квадрата суммы неповторяющихся

1. Открытие и чтение файла

f = open("9_17863.csv")
  • Открываем CSV файл с данными для обработки
  • Файл содержит строки с шестью натуральными числами, разделенными точкой с запятой

2. Инициализация счетчика

count = 0
  • Создаем переменную для подсчета строк, удовлетворяющих условиям

3. Обработка каждой строки

for line in f:
    a = list(map(int, line.strip().split(';')))
  • Читаем файл построчно
  • line.strip() - удаляем лишние пробелы и символы переноса строки
  • split(';') - разбиваем строку по разделителю ';'
  • map(int, ...) - преобразуем каждый элемент в целое число
  • Получаем список из 6 чисел

4. Поиск повторяющихся и неповторяющихся чисел

not_repeat = [x for x in a if a.count(x) == 1]
repeat = [x for x in a if a.count(x) == 3]
  • Используем списковые включения (list comprehension) для фильтрации чисел:
    • not_repeat - список чисел, которые встречаются только один раз
    • repeat - список чисел, которые встречаются ровно три раза
⚠️

Обратите внимание: в repeat одно и то же число будет записано три раза, так как мы проверяем каждый элемент списка a на условие повторения

5. Проверка условий

if len(repeat) == 3 and len(not_repeat) == 3 and (sum(repeat) ** 2 > sum(not_repeat) ** 2):
    count += 1

Проверяем три условия:

  1. len(repeat) == 3 - убеждаемся, что есть ровно три повторяющихся числа (одно число, повторенное три раза)
  2. len(not_repeat) == 3 - проверяем, что есть ровно три неповторяющихся числа
  3. sum(repeat) ** 2 > sum(not_repeat) ** 2 - проверяем, что квадрат суммы повторяющихся чисел больше квадрата суммы неповторяющихся

Если все условия выполняются, увеличиваем счетчик на 1.

6. Вывод результата

print(count)
  • Выводим итоговое количество строк, удовлетворяющих всем условиям

Для проверки своего решения можно создать тестовый файл с несколькими строками:

1;2;3;4;4;4    # подходит (4 повторяется трижды, 1,2,3 различны)
1;1;2;2;3;3    # не подходит (нет числа, повторяющегося трижды)
5;5;5;1;1;2    # не подходит (есть число, повторяющееся дважды)