题解 | 数制转换

#include <bits/stdc++.h>
using namespace std;

int main(){
    int a,b;
    string s;
    while(cin>>a>>s>>b){
        long long c=0;
        for(int i=0;i<s.size();i++){
            c*=a;
            if(isdigit(s[i]))c+=s[i]-'0';
            else {
                if(s[i]>='a'){
                    c+=s[i]-'a'+10;
                }else c+=s[i]-'A'+10;
            }
        }
        string d="";
        while(c!=0){
            int x=c%b;
            if(x>=10)d.push_back('A'+x-10);
            else d.push_back(x+'0');
            c/=b;
        }
        reverse(d.begin(),d.end());
        cout<<d<<endl;
    }
}

这个解法主要注意一点,a在ASCII表里面在后面,所以可以把判断写的简单一点

全部评论

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务