#include <iostream> #include <algorithm> using namespace std; int main() { string s; getline(cin, s, ' '); string t; getline(cin, t); string str = s + t; string odd_str; //下标为奇数的字符组成的字符串,奇数位字符串 string even_str; //下标为偶数的字符串组成的字符串,偶数位字符串 //根据字符在合并字符串中的次序,按字典序分奇数位、偶数位独立来排,但次序的奇偶性不变,即原来是奇数位,排序后还是奇数位 for (int i = 0; i < str.size(); i++) { if (i % 2 == 0) { odd_str += str[i]; } else if (i % 2 == 1) { even_str += str[i]; } } sort(odd_str.begin(), odd_str.end()); //奇排序 sort(even_str.begin(), even_str.end()); //偶排序 //将按奇数位、偶数位排序后的字符再填回合并字符串 strOutput int j = 0; //奇数位字符串的下标 int k = 0; //偶数位字符串的下标 for (int i = 0; i < str.size(); i++) { if (i % 2 == 0) { str[i] = odd_str[j]; j++; } else if (i % 2 == 1) { str[i] = even_str[k]; k++; } } char Output[] = {"084C2A6E195D3B7F5D3B7F"}; //输出参照字典(数字 + 大写字母) //对字符(符合字典 Input[])所代表的 16 进制的数进行 BIT 倒序的操作,并转换为相应的大写字符 for (int i = 0; i < str.size(); i++) { if ((str[i] >= '0') && (str[i] <= '9')) { str[i] = Output[str[i] - '0']; } else if ((str[i] >= 'a') && (str[i] <= 'f')) { str[i] = Output[str[i] - 'a' + 10]; } else if ((str[i] >= 'A') && (str[i] <= 'F')) { str[i] = Output[str[i] - 'A' + 16]; } } cout << str << endl; return 0; } // 64 位输出请用 printf("%lld")