PTA | 程序设计类实验辅助教学平台 (pintia.cn)
注意对字符串进行填充之后,str.size()是动态的,len=str.size(),len不是动态的,如果在遍历的时候用len而不是str.size()可能会导致循环提前结束:
#include<bits/stdc++.h>
using namespace std;
int main()
{
string A, B, C; cin >> A >> B;
reverse(A.begin(), A.end());
reverse(B.begin(), B.end());
int lenA = A.size(), lenB = B.size();
if (lenA > lenB)
{
B.append(lenA - lenB, '0');
}
else
{
A.append(lenB - lenA, '0');
}
char haxi[14] = { "0123456789JQK" };
for (int i = 0; i < lenA; i++)
{
if (i % 2 == 0)
{
C += haxi[(A[i] - '0' + B[i] - '0') % 13];
}
else
{
int t = B[i] - A[i];
if (t < 0)t = t + 10;
C += haxi[t];
}
}
//正序输出
for (int i = C.size() - 1; i >= 0; i--)
{
cout << C[i];
}
return 0;
}