题解 | #进制转换2#

进制转换2

https://www.nowcoder.com/practice/ae4b3c4a968745618d65b866002bbd32

#include <iostream>
#include<algorithm>
using namespace std;

int chartoint(char c){
    if('0'<=c&&c<='9') return c-'0';
    if('A'<=c&&c<='Z') return c-'A'+10;
    if('a'<=c&&c<='z') return c-'a'+10;
    return 0;
}
char inttochar(int n){
    if(0<=n&&n<=9) return n+'0';
    else return n-10+'A';
}
string change(string number,int presbase,int posbase){
    string res="";
    while(!number.empty()){
        int remainder=0;
        for(int i=0;i<number.size();i++){
            int cur = remainder*presbase + chartoint(number[i]);
            number[i] = inttochar(cur/posbase);
            remainder = cur%posbase;
        }
        res+=inttochar(remainder);
        while(number[0]=='0') number.erase(0,1);
    }
    reverse(res.begin(),res.end());
    return res;
}
int main() {
    int m,n;
    string number;
    cin>>m>>n>>number;
    cout<<change(number,m,n);
    return 0;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

去B座二楼砸水泥地:不过也可以理解,这种应该没参加过秋招
点赞 评论 收藏
分享
找不到工作死了算了:没事的,雨英,hr肯主动告知结果已经超越大部分hr了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务