对很长的数字用字符串处理,字符串数字的加减乘除都可以手动实现。唯一需要注意的一个小点是,商首部的一些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;
}