P1143. 进制转换

考点

  • 进制

题解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <bits/stdc++.h>
using namespace std;

int main() {
string str, ans;
int n, m, num;
cin >> n >> str >> m;
int a = 0;
for (auto ch : str) {
num = isdigit(ch) ? ch - '0' : ch - 'A' + 10;
a = a * n + num;
}
while (a) {
ans += (num = a % m) >= 10 ? num - 10 + 'A' : num + '0';
a /= m;
}
reverse(ans.begin(), ans.end());
cout << ans;
return 0;
}

思路

先把n进制数转换为十进制数,再把十进制数转换为m进制数即可