题解 | #进制转换#
进制转换
https://www.nowcoder.com/practice/0337e32b1e5543a19fa380e36d9343d7
#include<bits/stdc++.h>
using namespace std;
// 除法
string divide2(string str10) {
int temp= 0;// 上一位计算后的余数
string res= "";
for(int i=0; i<str10.length(); i++) {
temp= temp*10+ (int)(str10[i]-'0');
res+= (char)(temp/2+ '0');
temp%= 2;
}
int idx= 0;// 前面的0个数
for(int i=0; i<res.length(); i++) {
if(res[i]!='0') {
idx= i;
break;
}
}
return res.substr(idx);
}
// 取模
int mod2(string str10) {
// cout<< "mod="<< (str10[str10.length()-1]-'0')%2<< endl;
return (str10[str10.length()-1]-'0')%2;
}
// 10进制转二进制
string f(string str10) {
string str2= "";
while(str10.compare("0")!=0) {
// cout<< str10<< "/2=";
str2= (char)(mod2(str10)+ '0')+ str2;
str10= divide2(str10);
// cout<< str10<< "..."<< str2[0]<< endl;
}
if(str2.empty()) {
str2= "0";
}
return str2;
}
int main() {
string str10;
while(cin>> str10) {
cout<< f(str10)<< endl;
}
return 0;
}