输入描述:
输入的第一行包括两个整数:M和N(2<=M,N<=36)。
下面的一行输入一个M进制的数X,现在要求你将M进制的数X转换成N进制的数输出。
输出描述:
输出X的N进制表示的数。
输入:
10 2
11
输出:
1011
分析:
通过十进制作为中间者,先把m进制转化为十进制,再将十进制转化为n进制。
代码示例:
#include<iostream>
#include<stack>
#include<string>
using namespace std;
int main() {
int m, n;
cin >> m >> n;
long long value = 0;
string str;
cin >> str;
//将m进制转为十进制
for (int i = 0; i < str.size(); ++i) {
int cur = (str[i] >= '0' && str[i] <= '9') ?
int(str[i] - '0') : int(str[i] - 'A' + 10);
value = value * m + cur;
}
//十进制转为n进制
stack<char> ans;
while (value) {
ans.push(value % n < 10 ?
char((value % n) + '0') :
char((value % n) - 10 + 'A'));
value = value/n;
}
while (!ans.empty()) {
cout << ans.top();
ans.pop();
}
}