Задание №25 ЕГЭ Информатика с ответом и решением
Ответ: 1349341 1249338041 1549348941 1849359841
Условие
Маска числа — это последовательность цифр, в которой могут встречаться специальные символы «?» и «*». Символ «?» означает ровно одну произвольную цифру, символ «*» означает произвольную (в том числе пустую) последовательность цифр.
Пример. Маске 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.
Ответ: 1349341&1249338041&1549348941&1849359841
Типичные ошибки
- Потеряно число, у которого звёздочка задаёт пустую последовательность: «*» может соответствовать и нулю цифр, поэтому такие кандидаты тоже нужно проверять.
- Перебор оборван раньше верхней границы из условия. Проверь, что диапазон доходит до самого большого числа, которое допускают маска и ограничение по величине.
В тренажёре: подсказки по шагам, разбор твоей ошибки ИИ-репетитором (он не даёт готовый ответ), повторение ошибок по интервалам и общий прогресс. Все задания №25 по информатике