#include<bits/stdc++.h>
using namespace std;
int main()
{
string num;
int n, m, ten = 0; //ten十进制数 n进制转m
cin >> n >> num >> m;
//n转十 获取num长度
int l = num.size();
for (int i = l-1, k = 0; i >= 0; i--, k++)//从右至左倒序
{
int tmp;
if (num[i] >= 'A' && num[i] <= 'F')
tmp = num[i] - 'A' + 10;
else
tmp = num[i] - '0';
ten += tmp * pow(n, k); //ten=ten+tmp * pow(n, k);
}
//十转m
stack<char> stk;
while(ten)
{
int u = ten % m;
ten /= m;
char tmp;
if (u < 10)
tmp = u +'0';
else
tmp = u + 'A' - 10;
stk.push(tmp); //入栈
}
while(stk.size())//逆序输出
{
cout << stk.top();
stk.pop();
}
cout << endl;
return 0;
}
洛谷P1143进制转换
最新推荐文章于 2024-09-10 01:01:32 发布