Тема 9. Работа с электронными таблицами

9.02 Количество строк, удовлетворяющих условию

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела работа с электронными таблицами
Решаем задачу:

Ошибка.
Попробуйте повторить позже

Задача 1#74929

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

— среди всех чисел строки нет пары, чья сумма будет больше 13;

— четыре числа можно разбить на две пары чисел с равными суммами.

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

Вложения к задаче
Показать ответ и решение

Решение Excel:

Откроем файл электронной таблицы и для начала расположим числа в порядке убывания при помощи функции НАИБОЛЬШИЙ. Для поиска самого наибольшого числа формула (напишем ее в столбец E) будет иметь такой вид: =НАИБОЛЬШИЙ($A1:$D1;1). Для второго наибольшего числа формула (напишем ее в столбец F) будет иметь такой вид: =НАИБОЛЬШИЙ($A1:$D1;2). По аналогии заполняем столбцы G, H, таким образом, исходные числа будут расположены от наибольшего к наименьшему в строке E:H.

Если сумма двух максимальных чисел будет меньше 13, значит, никакая сумма других пар не будет больше 13. Напишем проверку в столбец I: =ЕСЛИ(СУММ(E1+F1)<= 13;1;0).

Проверим, что есть такие две пары чисел, чьи суммы будут равны. Напишем формулу в столбец J:

=ЕСЛИ(ИЛИ(E1+F1=G1+H1;E1+G1=F1+H1;E1+H1=F1+G1);1;0).

Осталось проверить, что два условия выполняются одновременно для строки. Для этого запишем формулу в столбец K: =ЕСЛИ(I1+J1=2;1;0). Считаем сумму столбца K и получаем 6.

Решение программой:

f = open(’9.txt’, ’r’)
lines = f.readlines()

count = 0

for line in lines:
    nums = list(map(int, line.split()))
    valid = True
    for i in range(4):
        for j in range(i + 1, 4):
            if nums[i] + nums[j] > 13:
                valid = False
                break
        if not valid:
            break
    if not valid:
        continue

    found = False
    for i in range(4):
        for j in range(i + 1, 4):
            pair1 = nums[i] + nums[j]
            remaining = [nums[k] for k in range(4) if k != i and k != j]
            if remaining[0] + remaining[1] == pair1:
                found = True
                break
        if found:
            break

    if found:
        count += 1

print(count)


Ответ: 6

Специальные программы

Все специальные программы

Программа
лояльности v2.0

Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!

Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение

Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты

Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей

Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ

Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!

cyberpunkMouse
cyberpunkMouse
Рулетка
Вы можете получить скидку в рулетке!