题解 | #进制转换#

进制转换

https://www.nowcoder.com/practice/0337e32b1e5543a19fa380e36d9343d7

#include <iostream>
#include <string>

using namespace std;

string bigIntMod(string num,int h){
    int x;
    int n = num.size();
    if (n>1){
        x = (num[n-2]-'0')*10 + (num[n-1]-'0');
    } else{
        x = stoi(num);
    }
    return to_string(x%h);
}

string bigIntDiv(string num,int h){
    string  res,ans;
    int x=0,y=0;
    for (int i = 0; i < num.size(); ++i) {
        x = y*10 + (num[i] - '0');
        if (x>=h){
            res += to_string(x/h);
        } else{
            res += "0";
        }
        y = x % h;
    }
    int i = 0;
    while (res[i]=='0'){
        i++;
    }
    int l = res.size()-i;
    for (int j = 0; j < l; ++j) {
        ans += res[i++];
    }
    return ans;
}

string trans(string num,int h){
    string res,w;
    while (num.size()){
        w = bigIntMod(num,h);
        num = bigIntDiv(num,h);
        res = w + res;
        if (num.size()==1 && num[0]=='0') break;
    }
    return res;
}

int main(){
    string str;
    while (cin>>str){
        cout<<trans(str,2)<<endl;
    }

    return 0;
}

全部评论

相关推荐

06-20 17:42
东华大学 Java
凉风落木楚山秋:要是在2015,你这简历还可以月入十万,可惜现在是2025,已经跟不上版本了
我的简历长这样
点赞 评论 收藏
分享
机械打工仔:我来告诉你原因,是因为sobb有在线简历,有些HR为了快会直接先看在线简历,初步感觉不合适就不会找你要详细的了
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务