文章

61

粉丝

137

获赞

18

访问

38.4k

头像
进制转换3 题解:C++实现
P1422 清华大学/厦门大学机试题
发布于2024年1月17日 11:07
阅读数 1.5k

#include<bits/stdc++.h>
using namespace std;

int main( ){
    int m ,n;
    string x;
    cin >> m >> n ;
    cin >> x ;

    //0特例
    if(x == "0"){
        cout << 0;
        return 0;
    }

    // m进制转化为十进制
    int i = 0 ;
    int tmp = 0;
    for(int j = x.length() -1;j >= 0 ;j--){
        if(x[j] >= '0' && x[j] <= '9')
            tmp += pow(m ,i++) * (x[j] - '0' );
        else
            tmp += pow(m ,i++) * (x[j] - 'A' + 10);
    }

    // 十进制转化为n进制
    i = 0;
    char ans[999];
    while(tmp != 0) {
        if(tmp % n >=0 && tmp % n <= 9)
            ans[i++] = '0' +  tmp % n;
        else
            ans[i++] = 'a' +  tmp % n - 10;
        tmp /= n;
    }

    // 输出结果
    for(int k = i - 1; k >= 0 ;k--){
        cout << ans[k];
    }

    return 0;
}

 

登录查看完整内容


登录后发布评论

4 条评论
Cookie‘s AE86
2024年1月17日 11:12

AC只有80,大佬帮我康康

赞(1)

snake : 回复 Cookie‘s AE86: tmp需要定义为long long int类型,中间换算过程中会超出int范围

2024年1月17日 11:57

Cookie‘s AE86 : 回复 snake: 牛,感谢

2024年1月17日 16:59

122793160 : 回复 snake: 大佬牛逼,解决了

2024年2月1日 12:53