1 条题解

  • 0
    @ 2026-8-28 1:32:45

    题解

    思路推导

    若 n>1n>1,因数 11 和 nn 一定存在,所以 d(n)≥n+1d(n)\ge n+1。因此当 d(n)=c≤Cd(n)=c\le C 时,只需枚举 n≤Cn\le C。

    可以在线性筛中同时维护最小质因数幂的和。设当前数中最小质因子 pp 的幂为 pep^e,对应几何和为 1+p+⋯+pe1+p+\cdots+p^e。扩展一个相同质因子时更新这两项;扩展新质因子时将因数和乘以 1+p1+p。这样可在线性时间求出 11 到最大查询值的因数和。

    做法

    先读入全部查询并令 CC 为最大值。用线性筛计算每个 n≤Cn\le C 的 d(n)d(n)。按 nn 从小到大遍历,若 d(n)≤Cd(n)\le C 且该值尚未记录,就令答案表在位置 d(n)d(n) 记录 nn。从小到大的顺序保证记录的是最小解。

    小规模可逐个尝试 nn 并用平方根分解求因数和;中等规模可用调和级数筛,对每个因数给其倍数累加。独立核验程序使用最小质因子表逐个分解整数。

    正确性证明

    线性筛的乘法更新依据因数和函数在互质数上的乘法性,以及质数幂公式 d(pe)=1+p+⋯+ped(p^e)=1+p+\cdots+p^e,故能正确求出每个 n≤Cn\le C 的因数和。

    任何满足 d(n)=c≤Cd(n)=c\le C 的解都有 n≤c≤Cn\le c\le C,不会超出枚举范围。答案表按 nn 递增时只写入第一次出现的位置,因此写入值恰是所有满足 d(n)=cd(n)=c 的整数中的最小者;从未写入的位置确实无解。故所有输出正确。

    复杂度分析

    时间复杂度为 O(C+t)O(C+t),空间复杂度为 O(C)O(C),其中 C=max⁡ciC=\max c_i。

    • 1

    信息

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