题解 | #进制转换#
进制转换
https://www.nowcoder.com/practice/0337e32b1e5543a19fa380e36d9343d7
模拟手工除法的过程
#include<vector>
#include<string>
#include<iostream>
#include<cstdio>
using namespace std;
string Divide(string str, int x) { // 模拟手工计算除以2的过程
int remainder = 0;
for (int i = 0; i < str.size(); i++) {
//如果某一位无法被整除 便保留其除以除数的余数,余数乘以十和低一位一起加入计算
int temp = remainder * 10 + str[i] -'0';
str[i] = temp / x + '0';
remainder = temp % x;
}
int pos = 0;
while (str[pos] == '0') {
pos++;
}
str = str.substr(pos);
return str;
}
int main() {
string str;
vector<int> vec;
while (cin >> str) {
if (str == "0") {
cout << "0"<<endl;
continue;
}
vec.clear();
while (str != "") { //str不等于空串的时候
vec.push_back((str[str.size() - 1] - '0') % 2);
str = Divide(str, 2);
}
for (int i = vec.size() - 1; i >= 0; i--) {
cout << vec[i];
}
cout << endl;
}
}
