Условие: № 5126 /dev/inf 11.22 (Уровень: Средний)
Откройте файл электронной таблицы, содержащей в каждой строке шесть натуральных чисел.
Определите количество строк таблицы, содержащих числа, для которых выполнены оба условия:
– в строке только одно число повторяется ровно три раза, остальные числа различны;
– среднее арифметическое неповторяющихся чисел строки не больше суммы повторяющихся чисел.
В ответе запишите только число.
Файлы к заданию: 9.xls
count = 0
for s in open('9.txt'):
M = [int(i) for i in s.split()]
if len(set(M)) == 4 and any(M.count(i) == 3 for i in M):
copied = (sum(M) - sum(set(M))) / 2
if (sum(M) - copied * 3) / 3 <= copied * 3:
count += 1
print(count)
Комментарии к решению задачи:
- count = 0 - Создаём переменную count со значением 0.
- for s in open('9.txt'): - Открываем файл '9.txt' и пробегаем цикл по строкам в файле с помощью переменной s.
- M = [int(i) for i in s.split()] - Разделяем строку s на отдельные элементы, преобразуем каждый элемент в целое число и сохраняем в список M.
- if len(set(M)) == 4 and any(M.count(i) == 3 for i in M): - Проверяем, что количество уникальных элементов в списке M равно 4, и есть хотя бы один элемент, который встречается в списке M ровно 3 раза.
- copied = (sum(M) - sum(set(M))) / 2 - Вычисляем сумму всех элементов в списке M, вычитаем сумму уникальных элементов из списка M и делим полученную разницу на 2, сохраняя результат в переменную copied.
- if (sum(M) - copied * 3) / 3 <= copied * 3: - Проверяем, что разность суммы элементов списка M и переменной copied умноженной на 3, с последующим делением этой скобки на 3 - меньше или равен copied * 3.
- count += 1 - Увеличиваем значение переменной count на 1.
- print(count) - Выводим значение переменной count.