首先,对于求区间 [l, r] 的问题,可以转换成求 [1, r] 的问题。答案为 [1, r] 的结果减去 [1, l - 1] 的结果。然后,需要分别统计最高位数字不同的约数的出现的次数,我们可以转变思路,枚举约数,统计每个约数在区间中出现的次数。假设这道题没有区分最高位,只是求约数个数,那就是一道经典的数论分块题目,求 [l, n] 中每个数约数的个数和,枚举约数,问题转换成求 ,直接计算的复杂度是 可以通过打表观察到, 到 的间隔会越来越大。于是我们就可以通过计算每个 的区间 [l, r] 的长度,快速计算每段区间的和,因为 的取值大约只有 个,复杂度为 ,具体复杂度证明请百...