任务:把一个x进制的数转换成y进制。
说明:先把x进制的数转换成十进制,如果x进制的数
s=
s
=
,则对应的十进制数为
∑n−10si∗xi
∑
0
n
−
1
s
i
∗
x
i
,再将其不断取模再倒序,转换成y进制数。
模板:
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;
}
练习题目:进制转换 HDU - 2031
题目详解:点击这里。