题目描述
将M进制的数X转换为N进制的数输出。
输入描述:
输入的第一行包括两个整数:M和N(2<=M,N<=36)。
下面的一行输入一个数X,X是M进制的数,现在要求你将M进制的数X转换成N进制的数输出。
输出描述:
输出X的N进制表示的数。
示例1
输入
10 2
11
输出
1011
思路
主要要用一个中间进制进行过渡,这个中间进制选十进制会比较方便。
代码
#include<iostream>
#include<string>
#include<stack>
using namespace std;
int main()
{
stack<int> s;
string tmp;
int m, n, y;
long long x;
char ch;
cin >> m >> n;
cin >> tmp;
if (tmp[0] <= '9' && tmp[0] >= '0')
{
x = tmp[0] - '0';
}
else
{
x = tmp[0] - 'A' + 10;
}
for (int i = 1;i < tmp.size();i++)
{
x = x * m;
if (tmp[i] <= '9' && tmp[i] >= '0')
{
x = x + tmp[i] - '0';
}
else
{
x = tmp[i] - 'A' + 10 + x;
}
}
while (x != 0)
{
y = x % n;
s.push(y);
x = x / n;
}
while (!s.empty())
{
if (s.top() <= 9)
{
cout << s.top();
}
else
{
ch = s.top() - 10 + 'A';
cout << ch;
}
s.pop();
}
cout << endl;
return 0;
}