题解 | #进制转换#
进制转换
http://www.nowcoder.com/practice/0337e32b1e5543a19fa380e36d9343d7
本题的难度在于如何进行大数除法。函数divide
实现了除数为2情况下的大数除法。
#include<bits/stdc++.h> using namespace std; string divide(string str) { int remain = 0; for(int i = 0; i < str.size(); i++) { int temp = remain * 10 + str[i] - '0'; str[i] = temp / 2 + '0'; remain = temp % 2; } while(str[0] == '0') str.erase(0, 1); return str; } int main() { string str; while(cin >> str) { vector<int> vec; while(!str.empty()) { vec.push_back((str.back() - '0') % 2); str = divide(str); } for(int i = vec.size() - 1; i >= 0; i--) cout << vec[i]; cout << endl; } return 0; }