Задания
Версия для печати и копирования в MS Word
Тип 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)


Аналоги к заданию № 61371: 61405 Все