题解 | #进制转换#

进制转换

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;
}

全部评论

相关推荐

xdm怎么说&nbsp;要被拷打了&nbsp;担心是KPI
丹田:面就完了,就当日薪四位数的大佬免费给给你面试。
点赞 评论 收藏
分享
求offer的大角牛:不吃香菜
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-23 16:31
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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