AcWing 3438. 数制转换
原题链接
简单
作者:
szh_2003
,
2022-07-07 20:41:27
,
所有人可见
,
阅读 191
#include<bits/stdc++.h>
using namespace std;
vector<char> change(int a, string str, int b) {
int s = 0;
int p = 1;
//将n转成十进制
int n = str.size();
for (int i = n - 1; ~i; i--) {
int t;
//全部转换成大写
if (str[i] >= 'a' && str[i] <= 'z') str[i] = str[i] - 'a' + 'A';
if (str[i] >= '0' && str[i] <= '9') t = str[i] - '0';
else t = str[i] - 'A' + 10;
s += p * t;
p *= a;
}
//将s1转成b进制
vector<char> ans;
while (s) {
int t = s % b;
if (t >= 10) ans.push_back(t - 10 + 'A');
if (t >= 0 && t <= 9) ans.push_back(t + '0');
s /= b;
}
return ans;
}
int main() {
int a, b;
string n;
cin >> a >> n >> b;
vector<char> ans = change(a, n, b);
for (int i = ans.size() - 1; ~i; i--) cout << ans[i];
}