Задания
Версия для печати и копирования в MS Word
Тип 25 № 84719
i

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

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

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

На­при­мер, маске 123*4?5 со­от­вет­ству­ют числа 123 415 и 12 300 475.

Среди на­ту­раль­ных чисел, не пре­вы­ша­ю­щих 1010, най­ди­те все числа, со­от­вет­ству­ю­щие маске 5?34?71*2, де­ля­щи­е­ся на 2026 без остат­ка.

В от­ве­те за­пи­ши­те все най­ден­ные числа в по­ряд­ке воз­рас­та­ния.

Ответ:

Спрятать решение

Ре­ше­ние.

При­ве­дем ре­ше­ние на языке Python.

from fnmatch import *

for x in range (0, 10**10, 2026):

if fnmatch(str(x),'5?34?71*2'):

if str(x)[1] in '13579' and str(x)[4] in '13579':

print(x)

 

В ре­зуль­та­те ра­бо­ты про­грам­ма долж­на вы­ве­сти сле­ду­ю­щее:

553497122

5134171692

5134971962

5734171592

5734971862

 

При­ве­дем ре­ше­ние Юрия Кра­силь­ни­ко­ва на языке Python.

from itertools import product

odd='13579'

d='0123456789'

twod=[''.join(x) for dl in range(3) for x in product(d,repeat=dl)]

a=sorted([int(f'5{x}34{y}71{z}2') for x in odd for y in odd for z in twod])

for y in [x for x in a if x%2026==0]: print(y)

 

При­ве­дем ре­ше­ние Юрия Кра­силь­ни­ко­ва на языке Python.

from re import fullmatch

for x in range (2026, 10**10, 2026):

if fullmatch(r'5[13579]34[13579]71\d*2',str(x)): print(x)