Задача с сайта https://kpolyakov.spb.ru/
В файле электронной таблицы 9-218.xls в каждой строке записаны четыре натуральных числа. Определите количество строк таблицы, для которых выполнены следующие условия:
– в строке первое и последнее число не совпадают ни с минимальным, ни с максимальным числом строки;
– разность максимального и минимального числа кратна разности оставшейся пары чисел.
Решение в Excel
Для начала найдем максимальное и минимальное число. Для этого в ячейки и
запишем соответственно формулы:
и растянем их вниз до конца таблицы.
В столбце проверим первое условие. Для этого в ячейку
запишем формулу:
В столбце проверим второе условие. Для этого в ячейку
запишем формулу:
и растянем ее вниз до конца таблицы.
В столбце проверим оба условия. Для этого в ячейку
запишем формулу
и растянем ее вниз до конца таблицы.
Но здесь есть нюанс: в некоторых ячейках присутствует запись #ДЕЛ/0!, что означает ошибку при делении на 0. Она сильно помешает при поиске суммы по столбцу , поэтому воспользуемся фильтром по столбцу
и уберем все строки, в которых присутствует значение #ДЕЛ/0!.
Выделим столбец и получаем количество нужных строк – 276.
Программное решение
f = open(’9-218.csv’)
c = 0
for i in f:
a = list(map(int, i.split(’;’)))
# Находим максимальное и минимальное значения в списке a
mx = max(a)
mn = min(a)
# Вычисляем разницу между максимальным и минимальным значениями
r1 = mx - mn
# Вычисляем модуль разности между первым и четвертым элементами списка a
r2 = abs(a[0] - a[3])
# Проверяем, что первый и четвертый элементы не равны
if r2 != 0:
# Максимальное значение не равно первому и четвертому элементам,
# а минимальное значение не равно первому и четвертому элементам.
# Также разность макс. и мин. числа кратна разности оставшейся пары чисел
if (mx != a[0]) and (mx != a[3]) and (mn != a[0]) and (mn != a[3])
and (r1 % r2 == 0):
c += 1 # Если все условия выполнены, увеличиваем счетчик c на 1
print(c)