PAT乙级 1048 数字加密

Hea ·
更新时间:2024-11-13
· 920 次阅读

题目:
在这里插入图片描述
输入样例:

1234567 368782971

输出样例:

3695Q8118

分析:
先将两字符串倒置,用0在末尾补齐位数较少的那个数组,然后遍历按奇偶情况分别处理(注意偶数索引对应奇数位,奇数索引对应偶数位),将每个处理后的字符放入新数组或修改原数组对应位置元素,最后再倒置输出。

Python实现:

dict0 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'J', 'Q', 'K'] b, a = input()[::-1].split() m, n = len(a), len(b) a = [int(x) for x in list(a)] b = [int(x) for x in list(b)] flag = True if n > m else False while len(a) != len(b): # 第一种追加0的方法 a.append(0) if flag else b.append(0) # sub = abs(m - n) 第二种追加0的方法 # a.extend([0] * sub) if flag else b.extend([0] * sub) for i in range(len(a)): if i % 2: b[i] = b[i] - a[i] if b[i] < 0: b[i] += 10 else: b[i] = dict0[(a[i] + b[i]) % 13] print(''.join([str(x) for x in b])[::-1])

C++实现:

#include #include using namespace std; int main() { string a, b, c, str = "0123456789JQK"; cin >> a >> b; reverse(a.begin(), a.end()); reverse(b.begin(), b.end()); int m = a.length(), n = b.length(); if (n > m) a.append(n - m, '0'); else if (n < m) b.append(m - n, '0'); for (int i = 0; i < a.length(); i++) { if (i % 2) { int t = b[i] - a[i]; if (t = 0; i--) cout << c[i]; return 0; }
作者:~豆沙味的旺仔



加密 pat

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章