1 条题解

  • 0
    @ 2026-7-20 1:42:56

    题解

    核心方法:秦九韶式累积

    若一个 KK 进制数的数码依次为 a0,a1,,aL1a_0,a_1,\ldots,a_{L-1},其值为:

    a0KL1+a1KL2++aL1a_0K^{L-1}+a_1K^{L-2}+\cdots+a_{L-1}

    可以改写成:

    (((a0K+a1)K+a2)K+)+aL1(((a_0K+a_1)K+a_2)K+\cdots)+a_{L-1}

    因此从左到右扫描,每读一位执行:

    ans = ans * K + 当前位数值
    

    字符转数值规则:

    • 09c-'0'
    • AFc-'A'+10

    最大可能值超过 32 位有符号整数,应使用 long longunsigned long long

    正确性说明

    扫描前 ii 位后,ans 等于这 ii 位组成的 KK 进制前缀的十进制值。加入下一位时,原前缀整体左移一位,相当于乘以 KK,再加上新数码,因此递推后仍保持该性质。扫描结束时,ans 就是完整数字的十进制值。

    复杂度

    所有字符串总长度为 SS

    • 时间复杂度:O(S)O(S)
    • 额外空间复杂度:O(1)O(1)(不计输入字符串)。
    • 1

    信息

    ID
    4945
    时间
    1000ms
    内存
    256MiB
    难度
    2
    标签
    递交数
    9
    已通过
    2
    上传者