Подсчёт билетов с заданной суммой первых трёх цифр

Сначала посчитайте тройки цифр с суммой target_sum, затем возведите число вариантов в квадрат. Именно равенство сумм обеих половин даёт ответы 9, 36 и 100.

Короткий ответ

Что ответить на собеседовании

Сначала посчитайте тройки цифр с суммой target_sum, затем возведите число вариантов в квадрат. Именно равенство сумм обеих половин даёт ответы 9, 36 и 100.

Подробный разбор

Ответ с пояснениями

Условие

Счастливый билет — это шестизначный номер, у которого сумма первых трёх цифр совпадает с суммой трёх последних. Реализуйте функцию happy_tickets(), принимающую один параметр:

• target_sum — положительное целое число (1 ≤ target_sum ≤ 27)

Функция должна вернуть количество шестизначных билетов, у которых сумма первых трёх цифр равна target_sum.

Пример 1: Ввод: print(happy_tickets(1)) Вывод: 9

Пример 2: Ввод: print(happy_tickets(2)) Вывод: 36

Пример 3: Ввод: print(happy_tickets(3)) Вывод: 100

Ответ

Сначала посчитайте тройки цифр с суммой target_sum, затем возведите число вариантов в квадрат. Именно равенство сумм обеих половин даёт ответы 9, 36 и 100.

По примерам требуется число счастливых билетов, хотя заключительная формулировка упоминает только первые три цифры. Ведущие нули допустимы: билет — шестисимвольный номер.

def happy_tickets(target_sum):
    if type(target_sum) is not int or not 1 <= target_sum <= 27:
        raise ValueError('Expected integer from 1 to 27')
    triples = sum(
        0 <= target_sum - a - b <= 9
        for a in range(10)
        for b in range(10)
    )
    return triples * triples

При сумме 1 подходят 001, 010 и 100. Любая из трёх первых половин сочетается с любой из трёх вторых: 3² = 9.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее