时/空限制:1s / 64MB
题解 :
- 先转换成十进制,然后每次/新的进制,根据当前%后的结果,当前的结果为
char(now < 10 ? '0' + now : 'A' + now - 10)
,而且加在原先的前面
#include <iostream>
using namespace std;
int main() {
int a, b;
string n;
cin >> a >> n >> b;
int x = 0;
for (auto c : n) {
if (isdigit(c)) x = x * a + (c - '0');
else if (isupper(c)) x = x * a + (c - 'A' + 10);
else x = x * a + (c - 'a' + 10);
}
string ans = "";
while (x) {
int now = x % b;
x /= b;
ans = char(now < 10 ? '0' + now : 'A' + now - 10) + ans;
}
cout << ans;
}