#include <iostream> #include <cstdio> #include <string> #include <algorithm> #include <vector> using namespace std; /** * char转int * @param target * @return */ int char2Int(char target); /** * int转char * @param target * @return */ char int2Char(int target); /** * 将m进制的num转化为十进制 * @param num * @param m */ long long convertM2Ten(string num, int m); /** * 将十进制的num转化为n进制 * @param num * @param n */ void convertTen2N(long long num, int n); /** * 进制转换2--清华大学 * @return */ int main() { int m, n; while (cin >> m >> n) { string num; cin >> num; long long number = convertM2Ten(num, m); convertTen2N(number, n); } return 0; } long long convertM2Ten(string num, int m) { long long number = 0; for (int i = 0; i < num.size(); ++i) { number *= m; number += char2Int(num[i]); } return number; } void convertTen2N(long long num, int n) { vector<char> ans; if (num == 0) { //特殊情况 ans.push_back('0'); } else { while (num != 0) { ans.push_back(int2Char(num % n)); num /= n; } } for (int i = ans.size() - 1; i >= 0; --i) { cout << ans[i]; } cout << endl; } char int2Char(int target) { if (target < 10) { return target + '0'; } else { //题目备注已经说明,输出为小写字母 return target - 10 + 'a'; } } int char2Int(char target) { if ('0' <= target && target <= '9') { //0~9直接减去字符0即可 return target - '0'; } else { //大于等于10,则先减去字符A(注意题目是大写还是小写),再加上10 return target - 'A' + 10; } }