进制转换
描述
将M进制的数X转换为N进制的数输出。
输入描述:
输入的第一行包括两个整数:M和N(2<=M,N<=36)。
下面的一行输入一个数X,X是M进制的数,现在要求你将M进制的数X转换成N进制的数输出。
输出描述:
输出X的N进制表示的数。
示例1
输入:
10 2
11
输出:
1011
备注:
注意输入时如有字母,则字母为大写,输出时如有字母,则字母为小写。
#include<bits/stdc++.h>
using namespace std;
//M进制转换为N进制
long long charTOint(char ch){
if(ch>='0' && ch<='9'){
return ch-'0';
}
else{
return ch-'A'+10;
}
}
char intTOchar(int temp){
if(temp>=0 && temp<=9){
return temp+'0';
//整数变字符,如果写 -'0'就会变成汉字
//跟ASCII码有关系
}
else{
return temp-10+'a';
}
}
int main(){
int m,n;
string str;
//因为可能含有符号所以必须是字符串的形式
cin>>m>>n;
cin>>str;
stack<char> data;
long long num=0;
//m进制先转换成十进制
//题目备注说输入时会有大写字母出现
for(int i=0;i<str.length();i++){
num*=m;
num+=charTOint(str[i]);
}
//十进制再转换成n进制
//题目备注说输出时应该输出小写字母
while(num!=0){
int temp=num%n;
data.push(intTOchar(temp));
num=num/n;
}
while(!data.empty()){
cout<<data.top();
data.pop();
}
return 0;
}```