题目
某情报机构采用公用电话传递数据,数据是5位的整数,在传递过程中是加密的。加密规则如下:每位数字都加上8,然后用和除以7的余数代替该数字,再将第1位和第5位交换,第2位和第3位交换。请编写程序,完成明文至密文的加密过程。
输入格式:
符合题目要求的5位整数
输出格式:
加密后的密文整数
输入样例:
12345
输出样例:
64352
解题
题目代码:
x = input()
r = ''
for i in x:
j = (int(i)+8)%7
r += str(j)
r = r[4] + r[2] + r[1] + r[3] + r[0]
print(r)
下面这个代码是另外一种写法效率和上面差不多,是两种不同的解题思路
x = input()
a = []
for i in range(5):
a.append(int(x[i]))
a[0],a[4] = a[4],a[0]
a[1],a[2] = a[2],a[1]
for i in range(5):
a[i] = (a[i]+8) % 7
print(a[0]*10**4+a[1]*10**3+a[2]*10**2+a[3]*10**1+a[4])
代码解释:
创建一个空字符串
for循环遍历键盘读入的字符串,用int()强制转换成int类型然后对他进行加密操作,然后再str()强制转换成str类型并与之前创建的空字符串相加组成新的字符串
最后用[]取各字符串的值并对他进行换序
总结
这道题主要是考查大家的对一个数怎么去加密以及换序,第二种写法更笨,还是第一种好一点