Тема 25. Обработка целочисленной информации

25.03 Маски

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

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

Задача 1#136550

Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:

– символ «?» означает ровно одну произвольную цифру;

– символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.

Например, маске 123*4?5 соответствуют числа 123405 и 12300405.

Среди натуральных чисел, не превышающих 1010  , найдите все числа, соответствующие маске 1?2157*4, делящиеся на 2024 без остатка.

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

Формат записи ответа: Найденное_число1 частное_от_деления_на_2024_1 Найденное_число2 частное_от_деления_на_2024_2 и тд.

Показать ответ и решение

Решение с помощью fnmatch:

Чтобы проверить соответствие чисел маске, используем стандартный модуль fnmatch, который поддерживает символы ? и *. Так как число должно делиться на 2024, будем перебирать только числа, кратные 2024, то есть использовать шаг 2024 в цикле range. Для каждого такого числа проверяем, подходит ли оно под маску "1?2157*4" с помощью fnmatch. Если подходит, выводим само число и частное от его деления на 2024.

# Импортируем функцию fnmatch для проверки по маске
from fnmatch import fnmatch

# Перебираем все числа, кратные 2024, до 10**10
for x in range(0, 10**10 + 1, 2024):
    # Проверяем соответствие маске "1?2139*4"
    if fnmatch(str(x), ’1?2157*4’):
        # Если подходит, выводим число и частное от деления на 2023
        print(x, x // 2024)

Ответ: 142157664 70236 1021575544 504731 1121571264 554136 1221577104 603546 1321572824 652951 1421578664 702361 1521574384 751766 1621570104 801171 1721575944 850581 1821571664 899986 1921577504 949396

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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