题解 | #数制转换#

数制转换

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")

全部评论

相关推荐

2025-12-15 14:16
门头沟学院 Java
回家当保安:发offer的时候会背调学信网,最好不要这样。 “27届 ”和“28届以下 ”公司招聘的预期是不一样的。
实习简历求拷打
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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