为了玩MC,被迫要求写P1143
为了玩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;
}
测试