1 条题解

  • 0
    @ 2026-8-5 14:00:59

    题解:任意进制转十进制

    思路

    从左到右处理每一位,维护当前答案 ans

    ans = ans * K + 当前数码
    

    这是位置计数法的逐步展开,也叫秦九韶式计算。数字字符减去 '0',字母字符减去 'A' 后再加 1010

    复杂度

    时间复杂度 O(S)O(|S|),空间复杂度 O(1)O(1)

    参考代码

    #include <bits/stdc++.h>
    using namespace std;
    
    int value(char c) {
        if (c >= '0' && c <= '9') return c - '0';
        return c - 'A' + 10;
    }
    
    int main() {
        int k;
        string s;
        cin >> k >> s;
    
        unsigned long long ans = 0;
        for (char c : s) {
            ans = ans * k + value(c);
        }
        cout << ans << "\n";
        return 0;
    }
    
    • 1

    信息

    ID
    5111
    时间
    1000ms
    内存
    128MiB
    难度
    6
    标签
    递交数
    21
    已通过
    10
    上传者