Маска числа (1 часть)
1 часть задач на нахождение чисел, соответствующих маске и делящихся без остатка на заданное число. Решение на Python.
Во всех приведённых ниже задачах нужно найти натуральные числа, не превышающие 109.
№D4FA23
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
– символ «?» означает ровно одну произвольную цифру;
– символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
Например, маске 123*4?5 соответствуют числа 123405 и 12300405.
Среди натуральных чисел, не превышающих 109, найдите все числа, соответствующие маске
1234?57?8, делящиеся на число 17 без остатка.
В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце –– соответствующие им результаты деления этих чисел на 17.
вариант решения
Уменьшим интервал для перебора чисел. Минимальное значение, соответствующее маске — 123405708, максимальное — 123495798.
Переберём числа в интервале, через методы строк найдём соответствующие маске и проверим делимость на 17. Для записи ответа выведем подходящие числа и результат их деления нв 17.

Результат:
| 123405788 | 7259164 |
| 123435708 | 7260924 |
| 123445738 | 7261514 |
| 123455768 | 7262104 |
| 123465798 | 7262694 |
| 123495718 | 7264454 |
Для решения следующей задачи достаточно изменить делитель.
№4A4F6C
Среди натуральных чисел, не превышающих 109, найдите все числа, соответствующие маске
1234?57?8, делящиеся на число 19 без остатка.
В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце –– соответствующие им результаты деления этих чисел на 19.
ответ
| 123405798 | 6495042 |
| 123425748 | 6496092 |
| 123455768 | 6497672 |
| 123475718 | 6498722 |
| 123485788 | 6499252 |
№E8DE64
Среди натуральных чисел, не превышающих 109, найдите все числа, соответствующие маске
12345?7?8, делящиеся на число 23 без остатка.
В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце –– соответствующие им результаты деления этих чисел на 23.
вариант решения
Ещё один возможный вариант решения для такого вида задач — перебирать только неизвестные цифры. Нужно определить какой цифрой в числе может быть заменён символ «?». Используя конкатенацию строк составляем число, преобразуем его в целочисленный тип и проверяем делимость на 23.

Результат:
| 123450798 | 5367426 |
| 123451718 | 5367466 |
| 123453788 | 5367556 |
| 123454708 | 5367596 |
| 123456778 | 5367686 |
| 123459768 | 5367816 |
№0CC810
Среди натуральных чисел, не превышающих 109, найдите все числа, соответствующие маске
12345?7?8, делящиеся на число 31 без остатка.
В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце –– соответствующие им результаты деления этих чисел на 31.
ответ
| 123452788 | 3982348 |
| 123453718 | 3982378 |
| 123457748 | 3982508 |
№317BA9
Среди натуральных чисел, не превышающих 109, найдите все числа, соответствующие маске
12345?7?8, делящиеся на число 37 без остатка.
В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце –– соответствующие им результаты деления этих чисел на 37.
ответ
| 123451758 | 3336534 |
| 123454718 | 3336614 |
| 123458788 | 3336724 |