题解 | #数制转换#

数制转换

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

#include <iostream>
#include "cmath"
using namespace std;
int charToInt(char c){
    if(c>='a'&&c<='f') return c-'a'+10;
    else if(c>='A'&&c<='F') return c-'A'+10;
    else return c-'0';
}
char intToChar(int i){
    if(i>=10&&i<=15) return 'A'+i-10;
    else return '0'+i;
}
int main() {
    int a;
    while (cin >> a ) { // 注意 while 处理多个 case
        // cout << a + b << endl;
        string n;
        int b;
        cin>>n>>b;
        long long mid=0;
        for(int i=0;i<n.size();i++){
			mid+=pow(a,n.size()-i-1)*charToInt(n[i]);//i*n^k累积相加
        }
        string b_str;
        if(mid==0) b_str='0';
        while(mid>0){
            b_str=intToChar(mid%b)+b_str;
            mid=mid/b;
        }
        cout<<b_str<<endl;
    }
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务