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

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

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

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

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

Среди на­ту­раль­ных чисел, не пре­вы­ша­ю­щих 108, най­ди­те все числа, со­от­вет­ству­ю­щие маске 12??36*1, де­ля­щи­е­ся на 273 без остат­ка.

В от­ве­те за­пи­ши­те в пер­вом столб­це таб­ли­цы все най­ден­ные числа в по­ряд­ке воз­рас­та­ния, а во вто­ром столб­це  — со­от­вет­ству­ю­щие им ре­зуль­та­ты де­ле­ния этих чисел на 273.

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

Ответ:

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

Ре­ше­ние.

Будем по­сле­до­ва­тель­но рас­смат­ри­вать каж­дое целое число, крат­ное 273. затем каж­дое число про­ве­рять на со­от­вет­ствие маске.

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

from fnmatch import *

for x in range(0, 10**8, 273): # Пе­ре­бе­ра­ем все числа от 0 с шагом 273, будут по­лу­чен­ны числа крат­ные 273

if fnmatch(str(x), '12??36*1'):# Про­ве­ря­ем по­лу­чен­ное число со­от­вет­ствию за­да­нию

print(x, x // 273)

 

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

1271361 4657

12633621 46277

12663651 46387

12693681 46497

При­ведём ре­ше­ние Ев­ге­ния Дж­об­са.

За­ме­тим, что при огра­ни­че­нии до 108 на месте звез­доч­ки может сто­ять не боль­ше од­но­го раз­ря­да. По­это­му до­ста­точ­но пе­ре­брать два ва­ри­ан­та  — пу­стая стро­ка на месте звез­доч­ки и 1 сим­вол на месте звез­доч­ки.

for a in range(10):

for b in range(10):

x = 12*10**5 + a*10**4 + b*10**3 + 361

# можно за­ме­нить на

# x = int(f'12{a}{b}361')

if x % 273 == 0:

print(x, x // 273)

for a in range(10):

for b in range(10):

for c in range(10):

x = 12*10**6 + a*10**5 + b*10**4\

+ 36*100 + c*10 + 1

# можно за­ме­нить на

# x = int(f'12{a}{b}36{c}1')

if x % 273 == 0:

print(x, x // 273)

 

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

d = '0123456789'

nums = sorted([int(f'12{x}{y}36{s}1') for x in d for y in d for s in ['']+list(d)])

for x in nums:

if x % 273 == 0:

print(x,x//273)

 

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

w = ['']+[i for i in '0123456789']

numbers = []

for x in '0123456789':

for y in '0123456789':

for z in w:

number = int('12'+x+y+'36'+z+'1')

numbers.append(number)

numbers = sorted(numbers)

for number in numbers:

if number % 273 == 0:

print(number, number // 273)

 

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

for i in range(0, 10**8, 273):

s = str(i)

if s[0:2] == '12' and s[4:6] == '36' and s[-1] == '1':

print(s, i//273)

Источник: ЕГЭ по ин­фор­ма­ти­ке 06.04.2023. До­сроч­ная волна