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

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

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

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

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

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

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

Ответ:

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

Ре­ше­ние.

Пе­ре­берём все числа от 2023 до 1010, с шагом в 2023. Таким об­ра­зом, каж­дое рас­смат­ри­ва­е­мое число будет крат­но 2023, не­об­хо­ди­мо толь­ко до­ба­вить про­вер­ку на со­от­вет­ствие оче­ред­но­го числа маске 1?2139*4.

 

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

for i in range(2023,10**10, 2023):

if (i%10==4) and (str(i)[2:6] == '2139') and (str(i)[0] == '1'):

print(i, i//2023)

 

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

162139404 80148

1321399324 653188

1421396214 702618

1521393104 752048

 

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

from fnmatch import *

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

if fnmatch(str(x), '1?2139*4'):

print(x, x//2023)

 

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

kys = ['']+[str(i) for i in range(999+1)]

numbers = []

for x in '0123456789':

for y in kys:

number = int('1' + x + '2139' + y + '4')

numbers.append(number)

numbers = sorted(numbers)

for number in numbers:

if number % 2023 == 0:

print(number, number//2023)

 

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

s = '1?2139*4'

a = []

for i in range(10):

j = -1

while True:

j += 1

i1, j1 = str(i), str(j)

s1 = s.replace('?',i1)

s1 = s1.replace('*',j1)

k = int(s1)

if k > 10**10:

break # на­ту­раль­ные числа не пре­вы­ша­ют 10^10

if k % 2023 == 0:

a.append([k,k//2023])

a.sort(key=lambda x:x[0])

[print(*a[i]) for i in range(len(a))]


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

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