#55256: cpp_answer


yp11451202@yphs.tp.edu.tw (705-38黃鈺潤)


#include <iostream>
#include <string>
#include <algorithm>
#include <cmath>

using namespace std;

// 將字元轉換為對應的數值
int charToValue(char c) {
    if (c >= '0' && c <= '9') return c - '0';
    if (c >= 'A' && c <= 'Z') return c - 'A' + 10;
    if (c >= 'a' && c <= 'z') return c - 'a' + 10;
    return 0;
}

// 將數值轉換為對應的字元
char valueToChar(int v) {
    if (v >= 0 && v <= 9) return v + '0';
    return v - 10 + 'A';
}

int main() {
    string n;
    int b1, b2;

    // 持續讀取輸入直到結束
    while (cin >> n >> b1 >> b2) {
        // 步驟 1: b1 進制轉 10 進制
        long long decimalValue = 0;
        long long power = 1;
        for (int i = n.length() - 1; i >= 0; i--) {
            decimalValue += (long long)charToValue(n[i]) * power;
            power *= b1;
        }

        // 步驟 2: 10 進制轉 b2 進制
        if (decimalValue == 0) {
            cout << "0" << endl;
            continue;
        }

        string result = "";
        while (decimalValue > 0) {
            result += valueToChar(decimalValue % b2);
            decimalValue /= b2;
        }

        // 因為是由低位往高位取餘數,最後需反轉字串
        reverse(result.begin(), result.end());
        cout << result << endl;
    }

    return 0;
}