任务
把一个x进制的数转换为y进制的数
求解
先将x进制的数转换为为10进制,然后再将十进制转换为为y进制即可
注意判断为0的情况个负数的情况
使用范例
HDU-2031-进制转换
#include <iostream>
using namespace std;
string transform(int x, int y, string s) {
string res = "";
int sum = 0;
for (int i = 0; i < s.length(); i++) {
if (s[i] == '-') continue;
if (s[i] >= '0' && s[i] <= '9') {
sum = sum * x + s[i] - '0';
} else {
sum = sum * x + s[i] - 'A' + 10;
}
}
while (sum) {
char tmp = sum % y;
sum /= y;
if (tmp <= 9) {
tmp += '0';
} else {
tmp = tmp - 10 + 'A';
}
res = tmp + res;
}
if (res.length() == 0) res = "0";
if (s[0] == '-') res = '-' + res;
return res;
}
string s;
int k;
int main() {
freopen("input.txt", "r", stdin);
while(cin>>s>>k) {
cout<<transform(10, k, s)<<endl;
}
return 0;
}