1 条题解

  • 0
    @ 2026-9-9 9:03:50

    题解

    思路

    两个整数相加时,若一共发生了 cc 次进位,则每次进位都会把当前位的 1010 换成高一位的 11,使数位和减少 99,所以 f(x+y)=f(x)+f(y)−9cf(x+y)=f(x)+f(y)-9c。

    做法

    因此先得到不计进位时的总贡献 2N∑f(Ai)2N\sum f(A_i),再减去所有有序数对在所有数位上产生的进位次数的 99 倍即可。

    对每个模数 p=10,100,…,1015p=10,100,\ldots,10^{15},令 Bi=Ai mod pB_i=A_i\bmod p,该位发生向上进位当且仅当 Bi+Bj≥pB_i+B_j\ge p。将所有 BiB_i 排序,对每个 BiB_i 二分第一个不小于 p−Bip-B_i 的位置,便能统计这一位产生进位的有序数对数量。

    复杂度

    共处理 1515 个模数,时间复杂度为 O(15Nlog⁡N)O(15N\log N),空间复杂度为 O(N)O(N)。

    • 1

    信息

    ID
    1591
    时间
    5000ms
    内存
    512MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者