题目:
输入样例:
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;
}