#include <iostream> #include<algorithm> using namespace std; //由于本题不涉及长整数,所以可以先转换为10进制,再转换为要得到的进制 int ctoi(char c) { if (c <= '9')return c - '0'; //大写字母的ascii码值更小 else if (c <= 'Z')return c - 'A'+10; else return c - 'a' + 10; } //a的asicii码是 char itoc(int x) { if (0 <= x && x <= 9)return '0' + x; else return x - 10 + 'A'; } int main() { int a, b; string num; while (cin >> a >> num >> b) { //先变成10进制再变成b进制 long decimal = 0; //秦九韶算法 for (int i = 0; i < num.size(); i++) { //注意这里不是累加,是等于 //decimal += decimal * a + ctoi(num[i]); decimal = decimal * a + ctoi(num[i]); } string res; //变成十进制后再用短除法变为b进制 while (decimal) { //加上余数 res += itoc(decimal % b); decimal /= b; } //短除法得到的存在res中的结果是反着的要倒过来 reverse(res.begin(), res.end()); cout << res << endl; } } // 64 位输出请用 printf("%lld")