#include <iostream> #include <type_traits> #include <vector> #include <algorithm> #include <map> using namespace std; int main() { // 输入 string a, b; cin >> a; cin >> b; string s; s = a+b; // 第一步:奇偶分开排序 vector<char> vj; vector<char> vo; for (int i = 0; i < s.length(); i++) { if (i % 2 == 0) vo.push_back(s[i]); else vj.push_back(s[i]); } sort(vj.begin(), vj.end()); sort(vo.begin(), vo.end()); // 第二步:排序 string result; for (int i = 0; i < s.length(); i++) { if (i % 2 == 0) result += vo[i/2]; else result += vj[(i-1)/2]; } // 第三步:加密 map<char,char> m= { {'0', '0'}, {'1', '8'}, {'2', '4'}, {'3', 'C'}, {'4', '2'}, {'5', 'A'}, {'6', '6'}, {'7', 'E'}, {'8', '1'}, {'9', '9'}, {'A', '5'}, {'B', 'D'}, {'C', '3'}, {'D', 'B'}, {'E', '7'}, {'F', 'F'}, {'a', '5'}, {'b', 'D'}, {'c', '3'}, {'d', 'B'}, {'e', '7'}, {'f', 'F'} }; for (int i = 0; i < result.length(); i++) { char c = result[i]; if (m[c]) result[i] = m[c]; } cout << result; } // 64 位输出请用 printf("%lld")