题解 | #数制转换#

数制转换

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

全部评论

相关推荐

屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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