HArcturus @ 2022-04-10 11:32:41
a=int(input()) #a是多少进制
b=input() #b是a进制数
def numm():
times=0
global a
global b
b_list = list(b)
for i in range(0,len(b_list)):
if b_list[i]=="A":
b_list[i]="10"
elif b_list[i]=="B":
b_list[i]="11"
elif b_list[i]=="C":
b_list[i]="12"
elif b_list[i]=="D":
b_list[i]="13"
elif b_list[i]=="E":
b_list[i]="14"
elif b_list[i]=="F":
b_list[i]="15"
else:
continue
c_list = b_list[:]
b_list.reverse()#左边是个位,右边是高位
for _ in range(0,30):
test_list=b_list[:]
test_list.reverse()
if b_list==test_list:
return("STEP="+str(times))
times+=1
for i in range(0,len(b_list)):
b_list[i]=str(int(c_list[i])+int(b_list[i]))
if int(b_list[i])>(a-1):
b_list[i]=str(int(b_list[i])-a)
if i != (len(b_list)-1):
b_list[i+1]=str(int(b_list[i+1])+1)
else:
b_list.append("1")
c_list=b_list[:]
c_list.reverse()
return "Impossible!"
print(numm())
by HArcturus @ 2022-04-10 11:34:14
for i in range(0,len(b_list)):
if b_list[i]=="A":
b_list[i]="10"
elif b_list[i]=="B":
b_list[i]="11"
elif b_list[i]=="C":
b_list[i]="12"
elif b_list[i]=="D":
b_list[i]="13"
elif b_list[i]=="E":
b_list[i]="14"
elif b_list[i]=="F":
b_list[i]="15"
这一段是把16进制数全部转换成10进制 比如["A","B"] 转换成["10","11"]
by HArcturus @ 2022-04-10 11:38:27
思路是b_list是待处理
test_list是b_list的倒序(不知道是不是这么说),用来检验是否是回文
c_list是b_list的倒序,是用来做加法的
每次就b_list+c_list的每一项
如果b_list的一项超过了a-1(进制),那就是要进位了,
如果不是最后一项,就给下一项加一
如果是最后一项,就给b_list加上一项["1"]
by Ramune @ 2022-04-10 12:09:42
input().strip()
by Ramune @ 2022-04-10 12:10:26
a=int(input().strip()) #a是多少进制
b=input().strip() #b是a进制数
def numm():
times=0
global a
global b
b_list = list(b)
for i in range(0,len(b_list)):
if b_list[i]=="A":
b_list[i]="10"
elif b_list[i]=="B":
b_list[i]="11"
elif b_list[i]=="C":
b_list[i]="12"
elif b_list[i]=="D":
b_list[i]="13"
elif b_list[i]=="E":
b_list[i]="14"
elif b_list[i]=="F":
b_list[i]="15"
else:
continue
c_list = b_list[:]
b_list.reverse()#左边是个位,右边是高位
for _ in range(0,30):
test_list=b_list[:]
test_list.reverse()
if b_list==test_list:
return("STEP="+str(times))
times+=1
for i in range(0,len(b_list)):
b_list[i]=str(int(c_list[i])+int(b_list[i]))
if int(b_list[i])>(a-1):
b_list[i]=str(int(b_list[i])-a)
if i != (len(b_list)-1):
b_list[i+1]=str(int(b_list[i+1])+1)
else:
b_list.append("1")
c_list=b_list[:]
c_list.reverse()
return "Impossible!"
print(numm())
by Ramune @ 2022-04-10 12:10:43
然后就ac了
by Ramune @ 2022-04-10 12:11:44
好像是因为linux评测环境的换行符号与windows不同
by Ramune @ 2022-04-10 12:13:22
@HowieHzGo
by HArcturus @ 2022-04-10 13:14:37
@hanyujie 谢谢大佬