Задание №9 — Обработка числовой информации
Откройте файл электронной таблицы, содержащей в каждой строке четыре натуральных числа. Определите количество строк таблицы, содержащих числа, для которых выполнены оба условия:
– наибольшее из четырёх чисел меньше суммы трёх других;
– четыре числа можно разбить на две пары чисел с равными суммами.
В ответе запишите только число.
Правильный ответ
118
Пояснение
Решение:
В файле 3100 строк, в каждой четыре натуральных числа . Строка подходит, если выполнены оба условия.
Первое условие: наибольшее из четырёх чисел меньше суммы трёх остальных. Удобно отсортировать числа строки и сравнить последнее из них с суммой первых трёх.
Второе условие: числа разбиваются на две пары с равными суммами. Разбиений четырёх чисел на две пары всего три, поэтому достаточно проверить три равенства: , , .
import csv
count = 0
for row in csv.reader(open('data.csv'), delimiter=';'):
a, b, c, d = [int(x) for x in row]
s = sorted([a, b, c, d])
big_ok = s[3] < s[0] + s[1] + s[2]
pairs_ok = (a + b == c + d) or (a + c == b + d) or (a + d == b + c)
if big_ok and pairs_ok:
count += 1
print(count) # 118
Программа находит 118 таких строк.
Ответ: 118