本题要求实现一种数字加密方法。首先固定一个加密用正整数 A,对任一正整数 B,将其每 1 位数字与 A 的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对 13 取余——这里用 J 代表 10、Q 代表 11、K 代表 12;对偶数位,用 B 的数字减去 A 的数字,若结果为负数,则再加 10。这里令个位为第 1 位。
输入格式:
输入在一行中依次给出 A 和 B,均为不超过 100 位的正整数,其间以空格分隔。
输出格式:
在一行中输出加密后的结果。
输入样例:
1234567 368782971
输出样例:
3695Q8118
代码实现:
# 1234567
# 368782971
a,b = input().split()
a = [int(i) for i in a[::-1]]
b = [int(i) for i in b[::-1]]
while True:
if len(a)>len(b):
b.append(0)
if len(b)>len(a):
a.append(0)
if len(b) == len(a):
break
d_odd = {10:'J', 11:'Q', 12:'K'}
res = []
for i,s in enumerate(b):
if (i+1)%2!=0:
r=(a[i]+s)%13
if r<10:
res.append(r)
else:
res.append(d_odd[r])
else:
r = s- a[i]
if r<0:
res.append(r+10)
else:
res.append(r)
print(''.join([str(i) for i in res[::-1]]))