题解 | #数制转换#

数制转换

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;
}
全部评论

相关推荐

有工作后先养猫:太好了,是超时空战警,我们有救了😋
点赞 评论 收藏
分享
10-11 17:30
湖南大学 C++
我已成为0offer的糕手:羡慕
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务