vscode上1秒之内出答案,洛谷上全Re
查看原帖
vscode上1秒之内出答案,洛谷上全Re
738720
Andy1216楼主2022/12/30 11:06
#把一个n进制列表转为10进制数
def solve(a):
    s=0
    for i in range(len(a)):
        s+=a[i]*n**(len(a)-1-i)
    return s

#把一个10进制数转化为n进制列表
def resolve(b):
    x=[]
    while b:
        a=b%n
        x.append(a)
        b=b//n
    x.reverse()
    return x
    
#判断回文数,用列表
def ishui(k):
    c=len(k)
    s=0
    for i in range(0,c):
        if k[i]==k[c-1-i]:
            s+=1
    if s==c:
        return 0
    else:
        return 1

n=int(input())
m1=input()
m=[int(m1[i]) for i in range(len(m1))]
#考虑在n进制下进行m的回文操作
    
#相加操作,直到生成回文数
#需要构建判断回文数的东西,这个应该是要轻车熟路了
#相加操作
pt=0
while ishui(m):
    if pt>=30:
        print('Impossible!')
        break
    m=resolve(solve(m)+solve(list(reversed(m))))
    pt+=1
if pt<30:
   print('STEP=%d'%pt)
2022/12/30 11:06
加载中...