πЕГЭ · ИИ-репетитор12 предметов · задания ФИПИ
Главная → Информатика → Задания №25 → Задание i25-07

Задание №25 ЕГЭ Информатика с ответом и решением

Ответ: 1076020 10760200 107602000 1076020000 1576026930

Условие

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

Пример. Маске 123*4?5 соответствуют числа 123405 и 12376415.

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

Подсказки — как подойти к решению

  1. Не перебирай все числа до предела: шагай сразу по числам, кратным делителю из условия. Верхнюю границу включай и следи, чтобы число соответствовало маске целиком, от первой цифры до последней.
  2. Символ «*» может задавать и пустую последовательность, поэтому подходящее число бывает короче, чем кажется. Для проверки маски удобно взять fnmatch или регулярное выражение, а не сверять цифры вручную.

Решение

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

from fnmatch import *

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

if fnmatch(str(x),'1?7602*0'):

print(x)

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

1076020

10760200

107602000

1076020000

1576026930

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

s = '1?7602*0'

for i in range(0,10):

s1 = str(i)

for j in range(-1,1002):

s2 = str(j)

if j == -1:

s2 =''

if j > 999:

s2 = '0'*(j-998)

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

ss = ss.replace('*',s2)

if int(ss) % 4891 == 0:

print(int(ss))

Ответ: 1076020&10760200&107602000&1076020000&1576026930

Типичные ошибки

Решить это задание в тренажёре

В тренажёре: подсказки по шагам, разбор твоей ошибки ИИ-репетитором (он не даёт готовый ответ), повторение ошибок по интервалам и общий прогресс. Все задания №25 по информатике