#include <iostream>
#include <cstdio>
#include <stack>
#include <math.h>
using namespace std;
int GetNumber(char c){
if(c >= '0' && c <= '9'){
return c - '0';
}else if(c >= 'a' && c <= 'z'){
return c - 'a' + 10;
}else {
return c - 'A' + 10;
}
}
char GetChar(int c){
if(c >= 0 && c <= 9){
return c + '0';//char int互换
}else{
return c - 10 + 'A';
}
}
int main(){
//将a进制n转为十进制 再将十进制转成b进制
int a,b;
string n;
while(cin >> a >> n >>b){
//n转为十进制
int sum = 0;
for(int i = 0;i < n.size();i ++){
sum += GetNumber(n[i]) * pow(a,n.size()-1-i);
}
//将十进制sum转为b进制
stack<char> sta;
while(sum){
sta.push(GetChar(sum%b));
sum = sum/b;
}
//打印
int m = sta.size();
int flag = 0;//前导0
for(int i = 0;i < m;i ++){
if(sta.top() != '0'){
flag =1;
}
if (flag ==1 ){//前导不为0后输出
printf("%c",sta.top());
}
sta.pop();
}
printf("\n");
}
return 0;
}
数制转换
最新推荐文章于 2022-02-11 23:20:33 发布