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

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

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

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

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

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

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

Ответ:

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

Ре­ше­ние.

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

from fnmatch import *

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

if fnmatch(str(x),'7?23?64*8'):

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

print(x)

 

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

782386498

7023064168

7023864438

7623064068

7623864338

 

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

from itertools import product

even='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 fullmatch

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

if fullmatch(r'7[02468]23[02468]64\d*8',str(x)): print(x)