5 条题解

  • 0
    @ 2025-3-21 11:25:55
    /*
    思路
        思路一:
            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;
    }
    

    信息

    ID
    96
    时间
    1000ms
    内存
    256MiB
    难度
    4
    标签
    递交数
    407
    已通过
    187
    上传者