题解 | #数制转换#
数制转换
http://www.nowcoder.com/practice/8ef02ef8571b417d8c311a87861f7a03
思路
短除法
AC代码
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
int a,b;
string n;
cin >> a >> n >> b;
if(n=="0"){
cout << 0;
return 0;
}
vector<int> C;
for(int i=n.size()-1;i>=0;i--){
if(n[i]>='a') C.push_back(n[i]-'a'+10);
else if(n[i]>='A') C.push_back(n[i]-'A'+10);
else C.push_back(n[i]-'0');
}
string ans="";
while(C.size()){
int t=0;
for(int i=C.size()-1;i>=0;i--){
C[i] = t*a+C[i];
t = C[i]%b;
C[i] /= b;
}
if(t<10){
ans += to_string(t);
}else{
ans += t-10+'A';
}
while(C.size() && C.back()==0) C.pop_back();
}
reverse(ans.begin(),ans.end());
cout << ans;
return 0;
}