2. Тип 25 № 61405 
Обработка целочисленной информации. Маска числа
i
Маска числа — это последовательность цифр, в которой могут встречаться специальные символы «?» и «*». Символ «?» означает ровно одну произвольную цифру, символ «*» означает произвольную (в том числе пустую) последовательность цифр.
Пример. Маске 123*4?5 соответствуют числа 123405 и 12376415. Найдите все натуральные числа, не превышающие 1010, которые соответствуют маске 3?2258*4 и при этом без остатка делятся на 2024.
В ответе запишите все найденные числа в порядке возрастания.
Решение. Будем последовательно рассматривать каждое целое число, кратное 2024, затем каждое число проверять на соответствие маске.
Приведём решение на языке Python.
from fnmatch import *
for x in range(0, 10**10, 2024):
# Перебираем все числа от 0 с шагом 2024, будут получены числа кратные 2024
if fnmatch(str(x), '3?2258*4'):
# Проверяем полученное число соответствию заданию
print(x)
В результате работы программа должна вывести следующее:
3422584
352258984
3022582904
3122588744
3222584464
3322580184
3422586024
3522581744
3622587584
3722583304
3822589144
3922584864
Приведём решение Михаила Глинского на языке Python.
for x in range(3022584,10**10):
if x % 2024 == 0:
y = x
break
for x in range(y,10**10,2024):
s=str(x)
if s[0] == '3' and s[2:6] == '2258' and s[-1] == '4':
print(x)
Ответ: 3422584&352258984&3022582904&3122588744&3222584464&3322580184&3422586024&3522581744&3622587584&3722583304&3822589144&3922584864
61405
3422584 352258984 3022582904 3122588744 3222584464 3322580184 3422586024 3522581744 3622587584 3722583304 3822589144 3922584864