(Д. Муфаззалов) Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
Например, маске \(123{*}4{?}5\) соответствуют числа \(123405\) и \(12300405.\)
Найдите все натуральные числа, не превосходящие число \(2023^3,\) соответствующие маске \(*2*0,\) записи которых в системах счисления с основаниями \(3\) и \(7\) являются палиндромами. В ответе запишите все найденные числа в порядке возрастания, а справа от каждого числа — сумму цифр в его записи в системе счисления с основанием \(8.\)
Решение:
Python
from itertools import product
def conv(n, p):
ans = ''
alph = '01234567'
while n > 0:
ans = alph[n % p] + ans
n //= p
return ans
lim = 2023**3
res = []
for r in range(1, 12):
for p in product('012', repeat=r):
if p[0] == '0':
continue
s = ''.join(p)
narr = []
d = int(s + s[::-1], 3)
if d < lim:
narr.append(d)
for c in '012':
d = int(s + c + s[::-1], 3)
if d < lim:
narr.append(d)
for n in narr:
if n % 10 == 0 and '2' in str(n):
n7 = conv(n, 7)
if n7 == n7[::-1]:
res.append((n, sum(int(z) for z in conv(n, 8))))
res.sort()
for n, s in res:
print(n, s)
Ответ:
\(8200 \,\, 3\)
\(233920 \,\, 15\)
\(532900 \,\, 18\)
\(3316520 \,\, 25\)
\(24919360 \,\, 25\)
\(184827640 \,\, 25\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене