*(Д. Муфаззалов) Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
Например, маске \(123{*}4{?}5\) соответствуют числа \(123405\) и \(12300405.\)
Найдите все натуральные числа, не превосходящие число \(10 \cdot 2023^3,\) соответствующие маске \({*}2{?}{?}3{*},\) записи которых в системах счисления с основаниями \(3,\) \(9\) и \(27\) являются палиндромами. В ответе запишите все найденные числа в порядке возрастания, а справа от каждого числа — сумму цифр в его записи в системе счисления с основанием \(8.\)
Решение:
Python
from itertools import product
def conv(n, p):
ans = ''
alph = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
while n > 0:
ans = alph[n % p] + ans
n //= p
return ans
lim = 10 * 2023**3
res = []
for r in range(1, 12):
for p in product('012', repeat=r):
if p[0] == '0':
continue
s = ''.join(p)
cand = []
d = int(s + s[::-1], 3)
if d < lim:
cand.append(d)
for c in '012':
d = int(s + c + s[::-1], 3)
if d < lim:
cand.append(d)
for n in cand:
ns = str(n)
if any(a == '2' and b == '3' for a, b in zip(ns, ns[3:])):
n9 = conv(n, 9)
n27 = conv(n, 27)
if n9 == n9[::-1] and n27 == n27[::-1]:
res.append((n, sum(int(z) for z in conv(n, 8))))
res.sort()
for n, s in res:
print(n, s)
Ответ:
\(4257368 \,\, 17\)
\(3922573402 \,\, 34\)
\(3922632451 \,\, 38\)
\(7834562453 \,\, 53\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене