https://pintia.cn/problem-sets/994805260223102976/problems/994805276438282240
百度之后,发现测试点2、5就是在A的位数大于B的位数的情况,B前面要添加‘0’再进行加密。
#include<iostream>
using namespace std;
int main() {
string a, b;
cin >> a >> b;
int i=a.size()-1, j=b.size()-1, k=1;
int num1, num2, num;
if(i>j){
for(int m=0; m<i-j; m++){
b = '0' + b;
}
j = i;
}
for(; i>=0 && j>=0; i--, j--, k++){
num1 = a[i]-'0';
num2 = b[j]-'0';
// 奇数位
if(k%2!=0){
num = (num1+num2)%13;
// 偶数位
}else{
num = num2-num1;
if(num<0){
num += 10;
}
}
if(num == 10){
b[j] = 'J';
}else if(num == 11){
b[j] = 'Q';
}else if(num == 12){
b[j] = 'K';
}else{
b[j] = num+'0';
}
}
cout << b << endl;
return 0;
}