题意理解一下,输入两条数字A,B,从各位开始一一对应,奇数位两数相加,对13取余,结果由J代替10,Q代替11,K代替12,然后偶数位由B-A,结果为正直接输出,为负就+10,输出的结果位每一位的结果按照原先的顺序输出。
分析一下,为了方便进行一一对应的进行计算,先将A,B倒序,然后根据奇偶进行计算,最后输出结果就行,该题还是比较简单的,但是也要注意有个坑,当A,B长度不一致时,如果A比B长,B需要进行补0操作,如果B更长,对A补0其实就相当于直接输出多余部分。
代码如下:
A,B=input().split()#输入得到A,B
A=A[::-1]
B=B[::-1]#将A,B逆序
res=[]
s='JQK'
flag=1#设置变量来判断奇偶性
if(len(B)<len(A)):
B+='0'*(len(A)-len(B))#如果A比B长,将B用0补足
for i,j in zip(A,B):
if(flag%2!=0):
res.append((int(i)+int(j))%13)#奇数时对应两数相加取对13余数
else:
res.append(int(j)-int(i))#偶数时相减
flag+=1
if(len(B)>len(A)):
for i in B[len(A):]:
res.append(int(i))#如果B比A长,直接将B长的部分加到结果中就行
for i in res[::-1]:
if(i>=10):
print(s[i-10],end='')#取余值大于10取对应字母JQK
elif(i<0):
print(i+10,end='')#相减值为负数+10
else:
print(i,end='')
提交结果: