#include <iostream> #include <string> using namespace std; // 将十六进制字符转换为对应的整数 int CharToInt(char c) { if (c >= '0' && c <= '9') { return c - '0'; // 数字字符直接转换 } else { return c - 'A' + 10; // 字母字符转换,a 对应 10,b 对应 11,依此类推 } } // 将字符串表示的十六进制数与整数 x 相乘 string multiple(string str, int x) { int carry = 0; // 进位 string result; // 存放结果 for (int i = str.size() - 1; i >= 0; i--) { int current = x * CharToInt(str[i]) + carry; // 计算当前位的结果 result = char(current % 10 + '0') + result; // 将当前位的结果插入到结果的前面 carry = current / 10; // 更新进位 } while (carry != 0) { result = char(carry % 10 + '0') + result; // 处理剩余的进位 carry /= 10; } return result; } // 将字符串表示的十六进制数与整数 x 相加 string Add(string str, int x) { int carry = x; // 初始进位为 x string result; // 存放结果 for (int i = str.size() - 1; i >= 0; i--) { int current = CharToInt(str[i]) + carry; // 计算当前位的结果 result = char(current % 10 + '0') + result; // 将当前位的结果插入到结果的前面 carry = current / 10; // 更新进位 } while (carry != 0) { result = char(carry % 10 + '0') + result; // 处理剩余的进位 carry /= 10; } return result; } int main() { string s; while (cin >> s) { string res = "0"; // 初始化结果为0 for (int i = 2; i < s.size(); i++) { res = multiple(res, 16); // 乘以16,相当于左移4位 res = Add(res, CharToInt(s[i])); // 加上当前字符代表的值 } cout << res << endl; // 输出最终结果 } return 0; }