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