#include <iostream> #include <algorithm> using namespace std; int main(){ // 字典法 char Input[] = {"0123456789abcdefABCDEF"}; char Output[] = {"084C2A6E195D3B7F5D3B7F"}; string s,t,u; cin>>s>>t; // 以空格为间隔 u = s + t; // 合并为一个字符串 // u中的奇数位置和偶数位置各自按照Ascii码从大到小排序 // 空间换时间,各自抽出新的 string newS,newT,newU; for(int i = 0; i < u.length(); ++i){ if(i % 2 == 0){ // 偶数位置 newT += u[i]; }else{ // 奇数位置 newS += u[i]; } } // 各自排序 std::sort(newS.begin(),newS.end()); std::sort(newT.begin(),newT.end()); // 将其合并得到新的newU int i = 0, k = 0; while(i < newS.length() && k < newT.length()){ // 先i后k newU += newT[k++]; newU += newS[i++]; } if(i < newS.length()){ newU += newS[i]; } if(k < newT.length()){ newU += newT[k]; } // 输出测试 // cout<<newU<<endl; // 调整阶段 for(int i = 0; i < newU.length(); ++i){ // 如果不是十六进制字符,即不为0-9,a-f,A-F,则直接追加到结果中 if(newU[i] >= '0' && newU[i] <= '9'){ newU[i] = Output[newU[i] - '0']; }else if(newU[i] >= 'a' && newU[i] <= 'f'){ newU[i] = Output[newU[i] - 'a' + 10]; }else if(newU[i] >= 'A' && newU[i] <= 'F'){ newU[i] = Output[newU[i] - 'A' + 16]; } } // 输出 cout<<newU<<endl; }