Тип 25 № 45259 
Обработка целочисленной информации. Маска числа
i
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
— символ «?» означает ровно одну произвольную цифру;
— символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
Например, маске 123*4?5 соответствуют числа 123405 и 12300405.
Среди натуральных чисел, не превышающих 109, найдите все числа, соответствующие маске 12345?7?8, делящиеся на число 23 без остатка.
В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце — соответствующие им результаты деления этих чисел на 23.
Количество строк в таблице для ответа избыточно.
Решение. Решим данную задачу методом перебора. Заметим, что маске «12345?7?8» соответствуют числа от 123450708 до 123459798. Для каждого числа будем проверять, что третья справа цифра равна 7 и последняя цифра числа равна 8. Для каждого такого числа будем проверять, кратно ли оно 23, если число кратно 23 — будем выводить его на экран, а также результат деления этого числа на 23.
Приведём решение на языке Pascal.
var
i: longint;
begin
for i := 123450708 to 123460000 do begin
if (((i mod 1000) div 100) = 7) and (i mod 10 = 8) then
if i mod 23 = 0 then writeln(i, ' ', i div 23);
end;
end.
Приведём решение на языке Python.
for i in range(123450708,123460000):
if (i%23==0) and (i%10==8) and ((i//100)%10==7):
print(i, i//23)
В результате работы программа должна вывести следующее:
123450798 5367426
123451718 5367466
123453788 5367556
123454708 5367596
123456778 5367686
123459768 5367816
Приведём решение Вагнерова Ивана на языке Python.
from fnmatch import *
for x in range(0,10**9,23):
if fnmatch(str(x), '12345?7?8'):
print(x, x//23)
Приведём решение Юрия Красильникова на языке Python.
d = '0123456789'
ans = sorted([int(f'12345{x}7{y}8') for x in d for y in d])
for x in ans:
if x%23==0:
print(x,x//23)
Ответ: 123450798&5367426&123451718&5367466&123453788&5367556&123454708&5367596&123456778&5367686&123459768&5367816
45259
123450798 5367426 123451718 5367466 123453788 5367556 123454708 5367596 123456778 5367686 123459768 5367816