本题的难度在于如何进行大数除法。函数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;
}


京公网安备 11010502036488号