题解 | #数制转换#

数制转换

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 a) {
    if (a >= 10 && a <= 15) return char(a - 10 + 'A');
    else return char(a + '0');
}
int toDec(string any, int a) {
    long long ans = 0;
    for (int i = any.size() - 1; i >= 0; i--) {
        ans += charToInt(any[i]) * pow(a, any.size() - 1 - i);
    }
    return ans;
}
string toAny(long long n,int b){
string ans;
if(n==0) ans="0";
while(n!=0){
    ans=intToChar(n%b)+ans;
    n/=b;
}
return ans;
}
int main() {
    int a;
    while (cin >> a) { // 注意 while 处理多个 case
        // cout << a + b << endl;
        string n;
        int b;
        cin >> n>>b;
        cout<<toAny(toDec(n,a),b)<<endl;
    }
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

怎么起名字:早知道就不读书了,害得我送外卖还得扶眼镜
点赞 评论 收藏
分享
星辰再现:裁员给校招生腾地方
点赞 评论 收藏
分享
下北澤大天使:你是我见过最美的牛客女孩😍
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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