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

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

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

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

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

Среди на­ту­раль­ных чисел, не пре­вы­ша­ю­щих 1010, най­ди­те все числа, со­от­вет­ству­ю­щие маске 1?2157*4, де­ля­щи­е­ся на 2024 без остат­ка. В от­ве­те за­пи­ши­те в пер­вом столб­це таб­ли­цы все най­ден­ные числа в по­ряд­ке воз­рас­та­ния, а во вто­ром столб­це  — со­от­вет­ству­ю­щие им ре­зуль­та­ты де­ле­ния этих чисел на 2024.

Ко­ли­че­ство строк в таб­ли­це для от­ве­та из­бы­точ­но.

Ответ:

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

Ре­ше­ние.

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

a = []

for x in range(10):

s = '1' + str(x) + '21574'

s = int(s)

if s < 10**10 and s % 2024 == 0:

a.append(s)

for x in range(10):

for y in range(10):

s = '1' + str(x) + '215700' + str(y) + '4'

s = int(s)

if s < 10**10 and s % 2024 == 0:

a.append(s)

for x in range(10):

for y in range(100):

s = '1' + str(x) + '21570' + str(y) + '4'

s = int(s)

if s < 10**10 and s % 2024 == 0:

a.append(s)

for x in range(10):

for y in range(1000):

s = '1' + str(x) + '2157' + str(y) + '4'

s = int(s)

if s < 10**10 and s % 2024 == 0:

a.append(s)

a.sort()

for i in range(len(a)):

print(a[i], a[i] // 2024)

 

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

142157664 70236

1021575544 504731

1121571264 554136

1221577104 603546

1321572824 652951

1421578664 702361

1521574384 751766

1621570104 801171

1721575944 850581

1821571664 899986

1921577504 949396

 

При­ведём ре­ше­ние Вик­то­рии Зи­бе­ро­вой на языке Python.

from fnmatch import fnmatch

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

if fnmatch(str(x),"1?2157*4"):

print(x,x//2024)

 

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

import re

for n in range(2024,10**10,2024):

if re.fullmatch('1[0-9]2157[0-9]*4',str(n)):

print(n,n//2024)

 

При­ме­ча­ние. Такое ре­ше­ние может быть легко мо­ди­фи­ци­ро­ва­но, если усло­вия за­да­чи из­ме­нят­ся. На­при­мер, если будет ска­за­но, что знак во­про­са озна­ча­ет не любую цифру, а толь­ко чётную, то будет до­ста­точ­но за­ме­нить шаб­лон '1[0-9]2157[0-9]*4' на '1[02468]2157[0-9]*4'.

 

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

import itertools

star = [''.join(p) for d in range(4) for p in itertools.product('0123456789',repeat = d)]

nums = sorted([int(f'1{q}2157{s}4') for q in '0123456789' for s in star])

for n in nums:

if n % 2024 == 0:

print(n,n // 2024)

 

При­ведём ре­ше­ние Алек­сея Те­ре­хо­ва на языке Python.

for x in range ((1021574 // 2024 + 1) * 2024, 10**10, 2024):

if str(x)[0] == '1' and str(x)[2:6] == '2157' and str(x)[-1] == '4':

print(str(x) + ' ' + str(x //2024))


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

Источник: Де­мон­стра­ци­он­ная вер­сия ЕГЭ−2024 по ин­фор­ма­ти­ке