为了玩MC,被迫要求写P1143

请输入文本 思路:先将给定的数转化为10进制,再通过求余确定各个位置的数字

以下是代码

#include <bits/stdc++.h>//不会写注释
using namespace std;

int charToValue(char c) {
    if (c >= '0' && c <= '9') return c - '0';
    return c - 'A' + 10;
}

char valueToChar(int v) {
    if (v >= 0 && v <= 9) return '0' + v;
    return 'A' + (v - 10);
}

long long toDecimal(const string& num, int st) {
    long long out = 0;
    for (char c : num) {
        out = out * st + charToValue(c);
    }
    return out;
}

string fromDecimal(long long num, int ed) {
    if (num == 0) return "0";
    string res;
    while (num > 0) {
        res = valueToChar(num % ed) + res;
        num /= ed;
    }
    return res;
}

int main() {
    int st, ed;
    string num;
    cin >> st >> num >> ed;

    long long decimal = toDecimal(num, st);
    string result = fromDecimal(decimal, ed);

    cout << result << endl;
    return 0;
}

标签: none

0

仅有一条评论

  1. 111 111

    测试

添加新评论