返回题解分享
讨论 / 题解分享/ 帖子详情

K进制转十进制 - 题解

/*
思路
    思路一:
        1. string先接收再char数组接收
        2. 每一位的数字乘以它的(数位减一次方)
*/
/*改进
#include <bits/stdc++.h>
using namespace std;

int main()
{
    string str;
    int n;
    cin >> str >> n;
    vector<char> ch;
    for ( char c : str ) {
        ch.push_back(c);
    }
    vector<char> chs(ch.size());
    int j = 0;
    for ( int i = ch.size()-1; i >= 0; i-- ) {
        chs[j] = ch[i];
        j++;
    }
    int count = 0;
    for ( size_t i = 0; i < chs.size(); i++ ) {
        count += (chs[i] - 48) * pow(n,i);
        
    }
    cout << count << endl;


    return 0;
}*/
#include <bits/stdc++.h>
using namespace std;

int main()
{
    string numStr;
    int base;
    cin >> numStr >> base;

    //创建动态数组 digits(数位)
    vector<char> digits(numStr.size());
    for ( size_t i = 0; i < digits.size(); i++ ) {
        digits[i] = numStr[numStr.size()-1-i];
    }

    //计算进制
    int result = 0;
    int power = 1;
    for ( size_t i = 0; i < digits.size(); i++ ) {
        if ( digits[i] >= 'A' && digits[i] <= 'F' ) {
            result += (digits[i] - 'A' + 10) * power;
        }else {
            result += (digits[i] - '0') * power;
        }
        power *= base;
    }

    cout << result << endl;

    return 0;
}
0 回复 0 转发 0 喜欢 7 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!