题解 | 魔导数据包的混合进制编码
魔导数据包的混合进制编码
https://www.nowcoder.com/practice/7bf7b552c757402fb2ff16a10ed0bb00
import sys
# 换为字符,然后求最长回文串
n = int(input())
b = list(map(int, input().split()))
s = "b" if n < 0 else "a"
n = abs(n)
for x in b:
d = n % x
n = n // x
s += chr(d + ord('a'))
# 找最长回文子串;字典序最小
if s == s[::-1]:
print(s+"(palindrome)")
else:
# 奇偶, 字典序最小
n = len(s)
resl = 1
resr = 0
for i in range(n):
l, r = i-1, i+1
while l >= 0 and r < n and s[l] == s[r]:
l -= 1
r += 1
l += 1
r -= 1
if r - l > resr - resl:
resr, resl = r, l
elif r - l == resr - resl and s[resl:resr+1] > s[l:r+1]:
resr, resl = r, l
for i in range(n):
l, r = i, i+1
while l >= 0 and r < n and s[l] == s[r]:
l -= 1
r += 1
l += 1
r -= 1
if r - l > resr - resl:
resr, resl = r, l
elif r - l == resr - resl and s[resl:resr+1] > s[l:r+1]:
resr, resl = r, l
# print(resl, resr)
print(s[resl:resr+1])
查看13道真题和解析