100%AC原生代码
2025-11-01 10:02:21
发布于:浙江
5阅读
0回复
0点赞
A30850.【进制转换】正整数的任意进制转换
#include <bits/stdc++.h>
using namespace std;
int c2v[128] = {0};
char v2c[36] = {0};
void init() {
for (int i = 0; i < 10; ++i) {
c2v['0' + i] = i;
v2c[i] = '0' + i;
}
for (int i = 0; i < 26; ++i) {
c2v['A' + i] = 10 + i;
v2c[10 + i] = 'A' + i;
}
}
unsigned long long p2d(const string &s, int p) {
unsigned long long r = 0;
for (char c : s) r = r * p + c2v[c];
return r;
}
string d2q(unsigned long long n, int q) {
if (!n) return "0";
string r;
while (n) {
r += v2c[n % q];
n /= q;
}
reverse(r.begin(), r.end());
return r;
}
int main() {
init();
int m;
cin >> m;
cin.ignore();
while (m--) {
string l;
getline(cin, l);
int p = stoi(l.substr(0, l.find(',')));
string s = l.substr(l.find(',') + 1, l.rfind(',') - l.find(',') - 1);
int q = stoi(l.substr(l.rfind(',') + 1));
cout << d2q(p2d(s, p), q) << endl;
}
return 0;
}
这里空空如也

有帮助,赞一个