题解 | 进制转换2:注意字符与数字之间的转换

#include <iostream>
#include <string>
#include <stack>
using namespace std;

int main() {
    int m,n;
    string x;
    cin >> m >> n >> x;
    long long num = 0;  //注意常规int型会超限
    stack<char> s;  //注意需定义字符型栈
    for(int i=0; i<x.size(); i++)  //由m进制转化为10进制
    {
        num *= m;
        if('A'<=x[i]&&x[i]<='Z')  //如果x[i]大于等于10,则为字符需要转化
        {
            num += x[i]-'A'+10;
        }
        else
        {
            num += x[i]-'0'; 
        }
    }
    while(num!=0)  //由10进制转化为n进制
    {
        if(num%n<10)
        {
            s.push(num%n+'0');
        }
        else{  //如果余数大于等于10,则需要转化为字符
            s.push(num%n-10+'a');
        }
        num /= n;
    }
    while(!s.empty())
    {
        cout << s.top();
        s.pop();
    }

}

#考研##牛客创作赏金赛#
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务