(А. Рогов) Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
Например, маске \(123{*}4{?}5\) соответствуют числа \(123405\) и \(12300425.\)
Среди натуральных чисел, не превышающих \(10^8,\) найдите все числа, соответствующие маске \(1{?}58{*}129,\) которые делятся без остатка только на одно из чисел \(117, \, 119, \, 121.\)
В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, справа от каждого числа запишите результат его деления на то из чисел \(117, \, 119, \, 121,\) на которое это число делится без остатка.
Решение:
Python
from itertools import product
nums = (117, 119, 121)
res = []
for k in range(2):
for p in product('0123456789', repeat=k):
for x in range(10):
ns = f"1{x}58{''.join(p)}129"
n = int(ns)
r = [n % d for d in nums]
if r.count(0) == 1:
i = [j for j in range(3) if r[j] == 0].pop()
res.append((n, n // nums[i]))
res.sort()
for n, d in res:
print(n, d)
Ответ:
\(10581129 \,\, 90437\)
\(12589129 \,\, 105791\)
\(13582129 \,\, 112249\)
\(17587129 \,\, 147791\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене