#include <iostream>
#include <string>
using namespace std;
// 字符转数字: '0'-'9' -> 0-9, 'A'-'Z' -> 10-35
int charToNum(char c) {
if (c >= '0' && c <= '9') return c - '0';
return c - 'A' + 10;
}
// 数字转字符
char numToChar(int n) {
if (n < 10) return '0' + n;
return 'A' + n - 10;
}
// 任意进制字符串转十进制
long long toDecimal(const string& s, int base) {
long long result = 0;
for (char c : s)
result = result * base + charToNum(c);
return result;
}
// 十进制转任意进制字符串
string fromDecimal(long long n, int base) {
if (n == 0) return "0";
string result;
while (n > 0) {
result = numToChar(n % base) + result;
n /= base;
}
return result;
}
int main() {
string s;
int fromBase, toBase;
cout << "输入数字及原进制: ";
cin >> s >> fromBase;
cout << "输入目标进制: ";
cin >> toBase;
long long dec = toDecimal(s, fromBase);
cout << s << " (" << fromBase << " 进制) = "
<< fromDecimal(dec, toBase) << " (" << toBase << " 进制)" << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8g5a2X56ym6L2s5pWw5a2XOiAnMCctJzknIC0+IDAtOSwgJ0EnLSdaJyAtPiAxMC0zNQppbnQgY2hhclRvTnVtKGNoYXIgYykgewogICAgaWYgKGMgPj0gJzAnICYmIGMgPD0gJzknKSByZXR1cm4gYyAtICcwJzsKICAgIHJldHVybiBjIC0gJ0EnICsgMTA7Cn0KCi8vIOaVsOWtl+i9rOWtl+espgpjaGFyIG51bVRvQ2hhcihpbnQgbikgewogICAgaWYgKG4gPCAxMCkgcmV0dXJuICcwJyArIG47CiAgICByZXR1cm4gJ0EnICsgbiAtIDEwOwp9CgovLyDku7vmhI/ov5vliLblrZfnrKbkuLLovazljYHov5vliLYKbG9uZyBsb25nIHRvRGVjaW1hbChjb25zdCBzdHJpbmcmIHMsIGludCBiYXNlKSB7CiAgICBsb25nIGxvbmcgcmVzdWx0ID0gMDsKICAgIGZvciAoY2hhciBjIDogcykKICAgICAgICByZXN1bHQgPSByZXN1bHQgKiBiYXNlICsgY2hhclRvTnVtKGMpOwogICAgcmV0dXJuIHJlc3VsdDsKfQoKLy8g5Y2B6L+b5Yi26L2s5Lu75oSP6L+b5Yi25a2X56ym5LiyCnN0cmluZyBmcm9tRGVjaW1hbChsb25nIGxvbmcgbiwgaW50IGJhc2UpIHsKICAgIGlmIChuID09IDApIHJldHVybiAiMCI7CiAgICBzdHJpbmcgcmVzdWx0OwogICAgd2hpbGUgKG4gPiAwKSB7CiAgICAgICAgcmVzdWx0ID0gbnVtVG9DaGFyKG4gJSBiYXNlKSArIHJlc3VsdDsKICAgICAgICBuIC89IGJhc2U7CiAgICB9CiAgICByZXR1cm4gcmVzdWx0Owp9CgppbnQgbWFpbigpIHsKICAgIHN0cmluZyBzOwogICAgaW50IGZyb21CYXNlLCB0b0Jhc2U7CgogICAgY291dCA8PCAi6L6T5YWl5pWw5a2X5Y+K5Y6f6L+b5Yi2OiAiOwogICAgY2luID4+IHMgPj4gZnJvbUJhc2U7CgogICAgY291dCA8PCAi6L6T5YWl55uu5qCH6L+b5Yi2OiAiOwogICAgY2luID4+IHRvQmFzZTsKCiAgICBsb25nIGxvbmcgZGVjID0gdG9EZWNpbWFsKHMsIGZyb21CYXNlKTsKICAgIGNvdXQgPDwgcyA8PCAiICgiIDw8IGZyb21CYXNlIDw8ICIg6L+b5Yi2KSA9ICIKICAgICAgICAgPDwgZnJvbURlY2ltYWwoZGVjLCB0b0Jhc2UpIDw8ICIgKCIgPDwgdG9CYXNlIDw8ICIg6L+b5Yi2KSIgPDwgZW5kbDsKCiAgICByZXR1cm4gMDsKfQ==