(Д. Муфаззалов) Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
Например, маске \(123{*}4{?}5\) соответствуют числа \(123405\) и \(12300405.\)
Найдите все натуральные числа, не превосходящие число \(10 \cdot 2023^3,\) соответствующие маске \({*}2{*}02{*}3{*},\) записи которых в системах счисления с основаниями \(5\) и \(25\) являются палиндромами. В ответе запишите все найденные числа в порядке возрастания, а справа от каждого числа — сумму цифр в его записи в системе счисления с основанием \(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, 9):
for p in product('01234', repeat=r):
if p[0] == '0':
continue
s = ''.join(p)
cand = []
d = int(s + s[::-1], 5)
if d < lim:
cand.append(d)
for c in '01234':
d = int(s + c + s[::-1], 5)
if d < lim:
cand.append(d)
for n in cand:
ns = str(n)
a = ns.find('2')
b = ns.find('02', a)
c = ns.find('3', b)
if a >= 0 and b > 0 and c > 0:
n25 = conv(n, 25)
if n25 == n25[::-1]:
res.append((n, sum(int(z) for z in conv(n, 8))))
res.sort()
for n, s in res:
print(n, s)
Ответ:
\(12490236902 \,\, 45\)
\(24902343804 \,\, 44\)
\(25402016354 \,\, 29\)
\(42490219356 \,\, 53\)
\(42602539356 \,\, 48\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене