题目链接:https://www.patest.cn/contests/pat-b-practise/1048
解题思路:类似于做大数加法,需要注意的地方是最后一个测试点有点麻烦。

//两个字符串不相等的时候需要补为0 
#include<cstdio>
#include<cstring>
void reverse(char s[]){  //reverse反转字符串 
    int len=strlen(s);
    for(int i=0;i<len/2;i++){
        int t=s[i];
        s[i]=s[len-1-i];
        s[len-1-i]=t;
    }
}
int main(){
    char str1[110],str2[110],str[110]={0};
    scanf("%s %s",str1,str2);
    int len1=strlen(str1);
    int len2=strlen(str2);
    reverse(str1);
    reverse(str2);
    int  len = len1>len2? len1: len2;
    for(int i=0;i<len;i++){
        int numA = i < len1 ? str1[i] - '0': 0;
        int numB = i < len2 ? str2[i] - '0': 0;
        if(i%2==0) {
            int tmp=(numA + numB)%13;
            if(tmp<10) str[i]=tmp + '0';
            else if(tmp==10) str[i] = 'J';
            else if(tmp==11) str[i] = 'Q';
            else if(tmp==12) str[i] = 'K';  
        }else{
            int tmp = numB - numA;
            if(tmp < 0) tmp += 10;
            str[i]=tmp + '0';
        }
    }
    reverse(str);
    puts(str);
    return 0;
}