1 条题解

  • 0
    @ 2025-3-19 20:49:45

    1

    #include <bits/stdc++.h>
    using namespace std;
    int x;
    string s;
    int a[40]; // 存 x 进制下的每一位
    int b[40]; // 存 x 进制下每一位对应的权值
    int main()
    {
        cin >> x >> s;
        int len = s.size();
        // 翻转并转换成对应的整数存入数组
        // s[0]~a[len-1], s[1]~a[len-2]
        for (int i = 0; i <= len - 1; i++)
        {
            if ('0' <= s[i] && s[i] <= '9')
                a[len - 1 - i] = s[i] - '0';
            else
                a[len - 1 - i] = s[i] - 'A' + 10;
        }
        // 算出每一位的权值
        b[0] = 1;
        for (int i = 1; i <= len - 1; i++)
            b[i] = b[i - 1] * x;
        // 每一位的数乘以对应权值相加
        int ans = 0;
        for (int i = 0; i <= len - 1; i++)
            ans += a[i] * b[i];
        cout << ans;
        return 0;
    }
    

    2

    #include <bits/stdc++.h>
    using namespace std;
    int x;
    string s;
    int a[40]; // 存 x 进制下的每一位
    int main()
    {
        cin >> x >> s;
        int len = s.size();
        // 翻转并转换成对应的整数存入数组
        // s[0]~a[len-1], s[1]~a[len-2]
        for (int i = 0; i <= len - 1; i++)
        {
            if ('0' <= s[i] && s[i] <= '9')
                a[len - 1 - i] = s[i] - '0';
            else
                a[len - 1 - i] = s[i] - 'A' + 10;
        }
        // 每一位的数乘以对应权值相加
        int ans = 0;
        int B = 1; // 当前位对应的权值
        for (int i = 0; i <= len - 1; i++)
        {
            ans += a[i] * B;
            B *= x;
        }
        cout << ans;
        return 0;
    }
    
    • 1

    信息

    ID
    9329
    时间
    1000ms
    内存
    128MiB
    难度
    2
    标签
    递交数
    21
    已通过
    13
    上传者