不要忽视写特殊条件,如a长b短的时候也满足用例
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int more(int a,int b)
{
if (a>=b) return a;
else return b;
}
int main()
{
char a[110],b[110];
int c[110];
char dui_yin[20];
dui_yin[10]='J',dui_yin[11]='Q',dui_yin[12]='K';
cin>>a>>b;
int a1=strlen(a),b1=strlen(b);
int i=0;
for( i=1;i<=a1&&i<=b1;i++)
{
if(i%2==1) {
c[i]=(b[b1-i]-'0'+a[a1-i]-'0')%13;
}
else {
c[i]=b[b1-i]-a[a1-i];
if(c[i]<0) c[i]+=10;
}
}
//要注意如果是 a长的话 b-a就是负数要加0
if(a1>=b1)
for(;i<=a1;i++)
{
if(i%2==1)c[i]=a[a1-i]-'0';
else//对应测试2,5 注意 为0的情况 测试用例 103 2
{
if(a[a1-i]!='0') c[i]=-(a[a1-i]-'0')+10;
else c[i]=a[a1-i]-'0';
}
}
else
for(;i<=b1;i++)
c[i]=b[b1-i]-'0';
for(i=more(a1,b1);i>=1;i--)
{
if(c[i]<10)cout<<c[i];
else cout<<dui_yin[c[i]];
}
}