n进制转换为m进制(2 <= n,m <= 16)
#include<iostream>
#include<string>
using namespace std;
int CharToInt (char a) { //字母转数字
return '0'<=a && a<='9' ? a-'0':10+a-'A'; //大于10的特判(A:10,B:11, C:12, D:13, E:14, F:15)
}
char IntToChar (int a) { //数字转字母
return a<=9 ? '0'+a:a-10+'A';
}
int main() {
int output[33];
int n,m,dec = 0,num = 0;
string input;
cin >>n>>input>>m;
//原数字转为10进制
for (int i=0;i<input.size();i++) {
dec = dec*n + CharToInt(input[i]);
}
//转成m进制
while(dec!=0) {
output[num++] = dec % m;
dec /= m;
}
//输出
for (int i=num-1;i>=0;i--)
cout << IntToChar(output[i]);
cout << endl;
return 0;
}