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

Маска числа  — это по­сле­до­ва­тель­ность цифр, в ко­то­рой могут встре­чать­ся спе­ци­аль­ные сим­во­лы «?» и «*». Сим­вол «?» озна­ча­ет ровно одну про­из­воль­ную цифру, сим­вол «*» озна­ча­ет про­из­воль­ную (в том числе пу­стую) по­сле­до­ва­тель­ность цифр.

При­мер. Маске 123*4?5 со­от­вет­ству­ют числа 123 405 и 12 376 415.

Най­ди­те все на­ту­раль­ные числа, не пре­вы­ша­ю­щие 1010, ко­то­рые со­от­вет­ству­ют маске 1?493*41 и при этом без остат­ка де­лят­ся на 2023. В от­ве­те за­пи­ши­те все най­ден­ные числа в по­ряд­ке воз­рас­та­ния.

 

Ответ:

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

Ре­ше­ние.

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

from fnmatch import *

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

if fnmatch(str(x),'1?493*41'):

print(x)

 

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

1349341

1249338041

1549348941

1849359841

 

При­ведём про­грам­му Вла­ди­ми­ра Лу­кьян­чи­ко­ва на PascalABC:

var i, k : int64; st : string;

begin

i := 1147041;

while i < 10000000000 do begin

st := i.ToString;

if (st[1] = '1') and (st[3:6] = '493') then println(i);

i := i + 202300;

end;

end.


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