#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=110;
char a[maxn],b[maxn];
char ans[maxn]={0};
int main()
{
scanf("%s %s",a,b);
int lenA=strlen(a);
int lenB=strlen(b);
reverse(a,a+lenA);
reverse(b,b+lenB);
int chang=max(lenA,lenB);
for(int i=0;i<chang;i++)
{
int numA=i<lenA?a[i]-'0':0;
int numB=i<lenB?b[i]-'0':0;
if(i%2==0)
{
int temp=(numA+numB)%13;
if(temp==10) ans[i]='J';
else if(temp==11) ans[i]='Q';
else if(temp==12) ans[i]='K';
else ans[i]=temp+'0';///****
}else if(i%2==1)
{
int temp=numB-numA;
if(temp<0) temp+=10;
ans[i]=temp+'0';
}
}
reverse(ans,ans+strlen(ans));
puts(ans);
return 0;
}
总结:
1.本题使用标准库函数reverse,max,注意添加头部
2.个位为第一位,即下标为偶对应奇数位,正好倒过来
3,定义的是字符数组,想反转不能用a.begin(),直接用a即可
4.ans是字符数组,故将求出的整数放入时,+‘0’不能丢
5.对于字符串长度不等,短的应用0补上