ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

PAT乙级_1048 数字加密 (20 分)_python

2021-03-08 17:02:09  阅读:183  来源: 互联网

标签:10 20 数字 insert python 1048 len result 题目


题目:

本题要求实现一种数字加密方法。首先固定一个加密用正整数 A,对任一正整数 B,将其每 1 位数字与 A 的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对 13 取余——这里用 J 代表 10、Q 代表 11、K 代表 12;对偶数位,用 B 的数字减去 A 的数字,若结果为负数,则再加 10。这里令个位为第 1 位。
输入格式:
输入在一行中依次给出 A 和 B,均为不超过 100 位的正整数,其间以空格分隔。
输出格式:
在一行中输出加密后的结果。
输入样例:
1234567 368782971
输出样例:
3695Q8118

思路:刚开始看到题目的时候,感觉题目很简单,但是看到示例的时候,实在没看懂,还以为是我没看懂题目的意思,后面看到别人的代码才知道是从后面往前匹配A,当B比A长时,需要将A开头用0补齐;当B比A短时,需要将B开头用0补齐,我觉得这里时题目没有说清楚的地方。

a, b = input().split()
a = list(map(int, a))
b = list(map(int, b))
# 对应10,11,12
lst = ['J', 'Q', 'K']
long_a = len(a)
# 如果a的长度大于b,则需要将b开头用0补齐
if len(a) > len(b):
    n = 0
    for i in range(len(a) - len(b)):
        b.insert(0, 0)
else:
    n = len(b) - len(a)
result = []
for i in range(long_a):
    # 偶数
    if (i + 1) % 2 == 0:
        c = b[len(b) - i - 1] - a[len(a) - i - 1]
        if c < 0:
            c = c + 10
        result.insert(0, str(c))
    # 奇数
    else:
        c = b[len(b) - i - 1] + a[len(a) - i - 1]
        c = c % 13
        if c < 10:
            result.insert(0, str(c))
        else:
            c = lst[c % 10]
            result.insert(0, c)
if n != 0:
    for j in range(n - 1, -1, -1):
        result.insert(0, str(b[j]))
# 因为result是列表,将里面的元素依次输出
print(*result, sep='')

标签:10,20,数字,insert,python,1048,len,result,题目
来源: https://blog.csdn.net/qq_42535394/article/details/114536443

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有