Текстовый файл состоит не более чем из \(10^6\) символов и содержит только десятичные цифры и знаки равенства («=»). Определите максимальную длину последовательности вида «число1=число2=число3=...=числоN», в которой нет соседних знаков «=» и есть хотя бы одно число, не превышающее \(2^{64},\) шестеричная запись которого содержит ровно \(7\) единиц. В ответе укажите количество символов.
Решение:
Python
from re import finditer
def cnt1(n):
ans = 0
while n:
ans += n % 6 == 1
n //= 6
return ans
s = open('7993.txt').readline().strip()
arr = []
n64 = 2**64
n = r'(0|[1-9][0-9]*)'
for g in finditer(rf'{n}(={n})+', s):
tmp = g.group(0).split('=')
lt = len(tmp) #1111111_6 == 55987
if any(55986 < int(x) <= n64 and cnt1(int(x)) == 7 for x in tmp):
arr.append(len(g.group(0)))
else:
tmp1 = g.group(0)[::-1].split('=')
lt = len(tmp)
for k, t in enumerate((tmp, )):
for i in range(lt - 1):
curr = t[i]
for p in range(1, len(curr)):
z = curr[p:] if k == 0 else curr[p:][::-1]
if int(z) > n64:
continue
if int(z) < 55987: #1111111_6 == 55987
break
if cnt1(int(z)) == 7:
stmp = f'{z}=' + '='.join(t[i+1:])
arr.append(len(stmp))
break
print(max(arr))
Ответ: \(910\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене