Как в ЕГЭ · 19 из 20
№25. Число по маске
По мотивам задания №25. Маска числа — запись, где «?» означает одну любую цифру, а «*» — любую последовательность цифр, в том числе пустую. Нужны все числа до предела, подходящие под маску и делящиеся на заданное число. Предел — десятки миллиардов, и перебрать все кратные не успеть. Зато вариантов маски — немного.
Что сделать
Найдите все числа не больше predel, подходящие под маску и делящиеся на delitel, — вместе с частными.
Что приходит
maska— строка из цифр, «?» и не больше одной «*»delitel— на что должно делиться числоpredel— наибольшее допустимое число, до 10¹¹
Что вернуть
Список пар (число, частное) по возрастанию числа; если подходящих нет — пустой.
Допишите функцию po_maske в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
Маска "1?2*", делитель 13, предел 10 000. Под маску подходят 102, 112, …, 192 (звезда пустая) и 1020…1929 (в звезде одна цифра). На 13 делятся 182 = 13 · 14, 1027 = 13 · 79, 1222 = 13 · 94 и другие — список начинается с (182, 14).
po_maske("1?2*", 13, 10000)
[(182, 14), (1027, 79), (1222, 94), (1326, 102), (1521, 117), (1625, 125), (1729, 133), (1820, 140), (1924, 148)]
«?» — ровно одна цифра 0–9, «» — любое число цифр, от нуля. Число записывается без ведущих нулей: «?» или «» в начале не может дать первую цифру 0. Число 0 не рассматривается. Числа — натуральные, не больше predel, делятся на delitel без остатка. Предел бывает до 10¹¹; решение, перебирающее все кратные делителя, на таком пределе не успевает.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.