题解 | #数制转换#

数制转换

https://www.nowcoder.com/practice/8ef02ef8571b417d8c311a87861f7a03

#include <iostream>
using namespace std;

// 先将原进制转到10进制,再转到目标进制

int main() {
   int from,to;
   string s;
   while(cin>>from){
        cin>>s;
        cin>>to;
        int ans=0;
        for(int i=0;i<s.size();i++){
            if('a'<=s[i] && s[i]<='z') s[i]-=32;
            ans = ans * from;
            if('0'<=s[i] && s[i]<='9') ans += s[i]-'0';
            else ans += s[i]-'A'+10;
        }
        string out="";
        while(ans > 0){
            int tmp = ans % to;
            if(tmp <10) out +=tmp+'0';
            else out += 'A' + tmp-10;
            ans /= to;
        }
        for(int i=out.size()-1;i>=0;i--){
            cout<<out[i];
        }
   }
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务