要考虑两个字符串不相等的情况。
#include <iostream> #include <vector> #include <bits/stdc++.h> using namespace std; int main() { string s, s1; cin >> s >> s1; int ka = 1; int a[10001], b[10001]; memset(a, 0, sizeof(a)); memset(b, 0, sizeof(b)); for(int i = s.length() - 1; i >= 0; i--) { a[ka++] = s[i] - '0'; } int kb = 1; for(int i = s1.length() - 1; i >= 0; i--) { b[kb++] = s1[i] - '0'; } int maxline = s.length() > s1.length() ? s.length() : s1.length(); vector<int> v; for(int i = 1; i <= maxline; i++) { if(i % 2 == 0) { int num = b[i] - a[i]; if(num < 0) { num += 10; } v.push_back(num); } else { int num = b[i] + a[i]; v.push_back(num % 13); } } for(int i = v.size() - 1; i >= 0; i--) { if(v[i] < 10) { cout << v[i]; } else if(v[i] == 10) { cout << "J"; } else if(v[i] == 11) { cout << "Q"; } else if(v[i] == 12) { cout << "K"; } } return 0; }