Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
— символ «?» означает ровно одну произвольную цифру;
— символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
Например, маске 123*4?5 соответствуют числа 123405 и 12300405.
Среди натуральных чисел, не превышающих 109, найдите все числа, соответствующие маске 12345?7?8, делящиеся на
В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце — соответствующие им результаты деления этих чисел
Количество строк в таблице для ответа избыточно.
Ответ:
Решим данную задачу методом перебора. Заметим, что маске «12345?7?8» соответствуют числа от 123450708 до 123459798. Для каждого числа будем проверять, что третья справа цифра
Приведём решение на языке 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)

