(Д. Муфаззалов) Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
Например, маске \(123{*}4{?}5\) соответствуют числа \(123405\) и \(12300405.\)
Найдите все натуральные числа, не превосходящие число \(50 \cdot 2023^3,\) соответствующие маске \({*}2023{*},\) записи которых в системах счисления с основаниями \(2\) и \(8\) являются палиндромами. В ответе запишите все найденные числа в порядке возрастания, а справа от каждого числа — сумму цифр в его записи в системе счисления с основанием \(8.\)
Решение:
Python
from itertools import product
lim = 50 * 2023**3
res = []
for r in range(1, 19):
for p in product('01', repeat=r):
if p[0] == '0':
continue
s = ''.join(p)
cand = []
d = int(s + s[::-1], 2)
if d < lim:
cand.append(d)
for c in '01':
d = int(s + c + s[::-1], 2)
if d < lim:
cand.append(d)
for n in cand:
ns = str(n)
if '2023' in ns:
n8 = oct(n)[2:]
if n8 == n8[::-1]:
res.append((n, sum(int(z) for z in n8)))
res.sort()
for n, s in res:
print(n, s)
Ответ:
\(2023279 \,\, 41\)
\(977872023 \,\, 30\)
\(7606302023 \,\, 47\)
\(7820112023 \,\, 38\)
\(62558032023 \,\, 46\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене