Среди натуральных чисел, не превышающих 10¹⁰, найдите все числа
Условие
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:— символ «?» означает ровно одну произвольную чётную цифру;— символ «» означает любую последовательность цифр произвольной длины; в том числе «» может задавать и пустую последовательность.Например, маске 1234?5 соответствуют числа 123 405 и 12 300 405. Среди натуральных чисел, не превышающих 10¹⁰, найдите все числа, соответствующие маске 7?23?648, делящиеся на 2026 без остатка. В ответе запишите все найденные числа в порядке возрастания.Ответ:
Ответ
7823864987023064168702386443876230640687623864338
Решение по шагам
Как рассуждать
Решение. Приведем решение на языке Python.from fnmatch import for x in range (0, 10**10, 2026): if fnmatch(str(x),'7?23?648'): if str(x)[1] in '02468' and str(x)[4] in '02468': print(x) В результате работы программа должна вывести следующее:7823864987023064168702386443876230640687623864338 Приведем решение Юрия Красильникова на языке Python.from itertools import producteven='02468'd='0123456789'twod=[''.join(x) for dl in range(3) for x in product(d,repeat=dl)]a=sorted([int(f'7{x}23{y}64{z}8') for x in even for y in even for z in twod])for y in [x for x in a if x%2026==0]: print(y) Приведем решение Юрия Красильникова на языке Python.from re import fullmatchfor x in range (2026, 10**10, 2026): if fullmatch(r'7[02468]23[02468]64\d*8',str(x)): print(x)
Осталось ещё 1 шаг — откроются после входа:
- Полный разбор с проверкой ответа
Бесплатно · займёт минуту