题解 | #进制转换#

进制转换

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

对很长的数字用字符串处理,字符串数字的加减乘除都可以手动实现。唯一需要注意的一个小点是,商首部的一些0要去掉。

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

struct answer{
	string shang;
	char yushu;
};

answer devide(string s,int chushu){
    string shang;int yushu_tmp=0;int plot;
    for(int i=0;i<s.size();i++){//对于每一位
        int beichushu=s[i]-'0'+yushu_tmp*10;//被除数对应位加上余数*10
        char output=(beichushu/chushu)+'0';
        shang=shang+output;
        yushu_tmp=beichushu%chushu;
    }
    char yushu=yushu_tmp+'0';
    if (shang[0]=='0'){
        for(plot=0;shang[plot]=='0';plot++);
        shang=shang.substr(plot);
    }
    answer ans;ans.shang=shang;ans.yushu=yushu;
    return ans;
}

//进制转换
int main(){
    string s;char yushu;string output;
    while(getline(cin,s)){
    while(s!="\0"){
        answer ans=devide(s,2);
        output=ans.yushu+output;
        s=ans.shang;
    }
    cout<<output<<endl;
    output.clear();yushu='0';
    }
    return 0;
}
全部评论

相关推荐

MomonKa:我拿Java简历投了pdd前端也给我简历过筛了
点赞 评论 收藏
分享
01-16 18:34
四川大学 Java
欢迎加入AI:没有啥稳定不稳定,一切都源于业务快速发展还是收缩。我当年一开始去的央企,业务不赚钱,也贼卷,慢慢就开始优化了。。。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务