#include <iostream> #include <string> #include <vector> #include <cmath> using namespace std; string Divide(string str, int x) { int remainder = 0; for (int i = 0; i < str.size(); i++) { int current = remainder * 10 + str[i] - '0'; str[i] = current / x + '0'; remainder = current % x; } int pos = 0; while (str[pos] == '0') { pos++; } return str.substr(pos); } string Multiple(string str,int x) { int carry=0; for(int i=str.size()-1;i>=0;--i) { int current=x*(str[i]-'0')+carry; str[i]=current%10+'0'; carry=current/10; } if(carry!=0) { str="1"+str; } return str; } string Add(string str,int x) { int carry=x; for(int i=str.size()-1;i>=0;i--) { int current=(str[i]-'0')+carry; str[i]=current%10+'0'; carry=current/10; } if(carry!=0) { str="1"+str; } return str; } int main() { string num; cin>>num; vector<int> binary; while (num.size()!=0) { int last=num[num.size()-1]-'0'; binary.push_back(last%2); num=Divide(num, 2); } int sum=0; string answer="0"; for(int i=0;i<binary.size();i++) { answer=Multiple(answer,2); answer=Add(answer,binary[i]); } cout<<answer; } // 64 位输出请用 printf("%lld")