题解 | #进制转换#
进制转换
http://www.nowcoder.com/practice/0337e32b1e5543a19fa380e36d9343d7
思路
高精度除法 注意数存的顺序
AC代码
#include<iostream>
#include<cstring>
#include<vector>
#include<algorithm>
using namespace std;
vector<int> div(vector<int> &a,int b){
vector<int> ans;
int t=0;
for(int i=a.size()-1;i>=0;i--){
t=t*10+a[i];
ans.push_back(t/b); //这里不要搞错了!!!
t = t%b;
} //这里注意需不需要加上最后的余数
reverse(ans.begin(),ans.end());
while(ans.size() && ans.back()==0) ans.pop_back();
return ans;
}
int main(){
string s;
while(cin >> s){
vector<int> a;
for(int i=s.size()-1;i>=0;i--){ //低位放在前面
a.push_back(s[i]-'0');
}
vector<int> ans;
while(a.size()){
ans.push_back(a[0]%2); //注意前后对应
a = div(a,2);
}
for(int i=ans.size()-1;i>=0;i--){
cout << ans[i];
}
if(ans.size()==0) cout << 0;
cout <<endl;
}
}