//土尔逊Torson 编写于2023/5/06 #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <cstdio> #include <string> #include <vector> using namespace std; char IntToChar06501(int x) { //数字转字符 if (x < 10) { return x + '0'; } else { return x - 10 + 'a'; } } int CharToInt06501(char c) { //字符转数字 if (c >= '0' && c <= '9') { return c - '0'; } else{ return c - 'A' + 10; } } int getpos(string str) { //获取空格位置 int pos; for (unsigned int i = 0; i < str.size(); ++i) { if (str[i] == ' ') { pos = i; break; } } return pos; } string upper(string str) { //转换成大写字母 for (unsigned int i = 0; i < str.size(); ++i) { if (str[i] >= 'a'&& str[i] <= 'f') { str[i] = str[i] - 32; } } return str; } int main() { int m, n; string str; while (getline(cin, str)) { int pos = getpos(str); //全部字母转换成大写字母 str = upper(str); string aS, bS; //从字符串截取 题意输入的数字 a 和 b,并保留 N 字符串 aS = str.substr(0, pos); str = str.substr(pos + 1); pos = getpos(str); bS = str.substr(pos + 1); str = str.substr(0, pos); m = stoi(aS); n = stoi(bS); long long number = 0; for (int i = 0; i < str.size(); ++i) { //m进制转十进制 number *= m; number += CharToInt06501(str[i]); } vector<char> answer; while (number != 0) { //十进制转n进制 answer.push_back(IntToChar06501(number % n)); number /= n; } for (int i = answer.size() - 1; i >= 0; --i) { //逆序输出 if (answer[i] >= 'a'&& answer[i] <= 'f') { //结果全部转换成大写输出 answer[i] = answer[i] - 32; } printf("%c", answer[i]); } printf("\n"); } system("pause"); return EXIT_SUCCESS; } // 64 位输出请用 printf("%lld")