将M进制的数X转换为N进制的数输出。
输入输出格式
输入描述:
输入的第一行包括两个整数:M和N(2<=M,N<=36)。
下面的一行输入一个数X,X是M进制的数,现在要求你将M进制的数X转换成N进制的数输出。
输出描述:
输出X的N进制表示的数。
输入输出样例
输入样例#:
10 2
11
输出样例#:
1011
提示
注意输入时如有字母,则字母为大写,输出时如有字母,则字母为小写。
代码:
#include <iostream>
#include <math.h>
#include <stack>
#include <string>
using namespace std;
void change(int m, int n, string s) {
int len = s.size();
int a[1000];
for (int i = 0; i < len; i++) {
if (s[i] >= '0' && s[i] <= '9') {
a[i] = s[i] - '0';
}
else {
a[i] = 10 + s[i] - 'A';
}
}
long long x1 = 0;
for (int i = len - 1, j=0; i >= 0; j++,i--) {
long long t = pow(m, i);
x1 = x1 + a[j] * t;
}
stack<char> retStack;
while (x1) {
int t = x1 % n;
if (t >= 0 && t <= 9) {
retStack.push(t + '0');
}
else {
retStack.push('a'+t-10);
}
x1 /= n;
}
while (!retStack.empty()) {
cout << retStack.top();
retStack.pop();
}
}
int main() {
int m, n;
cin >> m >> n;
getchar();
string s{};
cin >> s;
change(m, n, s);
}