AcWing 124. 数的进制转换
原题链接
简单
作者:
lmk
,
2021-01-22 17:38:30
,
所有人可见
,
阅读 481
进制转换
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5;
string as;
vector <int> num;
vector <int> res;
char itoc(int n) {
if (n >= 0 && n <= 9)
return n + '0';
else if (n >= 10 && n <= 35)
return n - 10 + 'A';
return n - 36 + 'a';
}
int ctoi(char ch) {
if (ch >= '0' && ch <= '9')
return ch - '0';
else if (ch >= 'A' && ch <= 'Z')
return ch - 'A' + 10;
return ch - 'a' + 36;
}
void f(int n, int m) {
num.clear();
res.clear();
for (int i = as.size() - 1; i >= 0; i--)
num.push_back(ctoi(as[i]));
while (num.size()) {
int yu = 0;
for (int i = num.size() - 1; i >= 0; i--) {
num[i] += yu * n;
yu = num[i] % m;
num[i] /= m;
}
res.push_back(yu);
for (int i = num.size() - 1; i >= 0 && !num[i]; i--)
num.pop_back();
}
reverse(res.begin(), res.end());
}
int main()
{
int t; scanf("%d", &t);
while (t--) {
int a, b;
cin >> a >> b >> as;
cout << a << ' ' << as << endl;
f(a, b);
cout << b << ' ';
for (auto to : res)
cout << itoc(to);
cout << endl<<endl;
}
return 0;
}